2012-04-17 71 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); 
    } 
}