2012-04-17 76 views
0
<bean id="arrayDescriptor" 
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject"> 
     <value>oracle.sql.ArrayDescriptor</value> 
    </property> 
    <property name="targetMethod"> 
     <value>createDescriptor</value> 
    </property> 
    <property name="arguments"> 
     <list> 
      <value>UDB_NAME</value> 
      <value>#{database.getConnection()}</value> 
     </list> 
    </property> 
</bean> 

我似乎无法使该方法的工作,因为它需要(字符串,java.sql.Connection中),而不是它的获取(字符串,org.basic.datasource.PoolableConnection的参数)。SpringMethodInvocationBean:参数是一个接口

是否可以对EL进行类型转换?我有研究它不可能。 我可以使用另一个弹簧API来运行方法和参数吗? 是否有可能在Spring中实例化接口?我有研究,这是不可能的。

回答

0

首先ArrayDescriptor.createDescriptor()需要DataSource,而不是连接。我想database代表DataSource,尝试:

<value>#{database}</value> 

甚至:

<ref bean="database"/> 

怎么样使用Java的配置和避免这种XML地狱?

@Configuration 
public class Cfg { 

    @Resource 
    private DataSource database; 

    @Bean 
    public ArrayDescriptor arrayDescriptor() { 
     return ArrayDescriptor.createDescriptor("UDB_NAME", database); 
    } 
}