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>

我似乎无法使该方法起作用,因为它需要(String,java.sql.Connection)的参数而不是获取(String,org.basic.datasource.PoolableConnection)。

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

4

1 回答 1

0

首先是ArrayDescriptor.createDescriptor()requires 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);
    }
}
于 2012-04-17T16:01:19.847 回答