2011-04-14 40 views
1

目前,它被用作如下......不知道是否有一個較短的版本(類似UTIL命名空間)在cfg文件中如何使用MethodInvokingFactoryBean有更短的版本嗎?

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetObject"> 
      <ref bean="transformation" /> 
     </property> 
     <property name="targetMethod"> 
      <value>addTransformers</value> 
     </property> 
     <property name="arguments"> 
      <list> 
       <ref bean="customTransformers" /> 
      </list> 
     </property> 
    </bean> 

回答

2

你」把它寫短些重新使用非常詳細的語法,你可以把它縮短只是通過更簡潔:使用@Ralph提到p:語法

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="transformation"/> 
    <property name="targetMethod" value="addTransformers"/> 
    <property name="arguments"> 
     <list> 
      <ref bean="customTransformers" /> 
     </list> 
    </property> 
</bean> 

除此之外,也許,我不知道的基於命名空間捷徑。

0

如果你沒有任何參數,你可以這樣做:

<bean id="mybean" factory-instance="otherBean" factory-method="getMyBean"/> 
2

使用@Configuration另一種方法,但用於設置系統屬性,你可以儘管適應:

@Bean 
public Properties retrieveSystemProperties(){ 
    return System.getProperties(); 
} 

private Properties systemProperties; 
public Properties getSystemProperties() { 
    return systemProperties; 
} 
@Resource(name="retrieveSystemProperties") 
public void setSystemProperties(Properties systemProperties) { 
    this.systemProperties = systemProperties; 
} 

@Bean 
public MethodInvokingFactoryBean methodInvokingFactoryBean() { 
    MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean(); 
    methodInvokingFactoryBean.setStaticMethod("java.lang.System.setProperties"); 
    systemProperties.setProperty("http.keepAlive", "false"); 
    methodInvokingFactoryBean.setArguments(new Object[]{systemProperties}); 
    return methodInvokingFactoryBean; 
} 
相關問題