2012-04-17 6 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이 필요합니다. 내가 databaseDataSource 대표 추측 시도 : 심지어

<value>#{database}</value> 

또는 :

<ref bean="database"/> 

무엇 자바 구성을 사용하여이 XML 지옥 방지에 관한?

@Configuration 
public class Cfg { 

    @Resource 
    private DataSource database; 

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