这可以通过xml简单地完成,详见Spring文档的sections 3.3.2.2和3.3.2.3。
总之,第3.3.2.2节提出了一种调用类的方法static
的方法。这可以为这样做:
<bean id="myBean"
class="com.foo.MyClass"
factory-method="myStaticMethod"/>
这将创建在ApplicationContext
一个bean与myBean
的名称,它是由返回的对象从MyClass.myStaticMethod()
的invokation填充。
但是,这只是一半,因为我们只有static
方法的结果(第一次调用你的情况)。
第3.3.2.3节详细介绍了如何调用已存在于ApplicationContext
中的bean的非静态方法。它可以是这样完成的:
<bean id="myOtherBean"
factory-bean="myBean"
factory-method="myNonStaticMethod"/>
这将创建在ApplicationContext
一个bean与myOtherBean
的名称,它是由返回的对象从myBean.myNonStaticMethod()
的invokation,其中myBean
是豆从ApplicationContext
拉填充。
当放在一起时,你应该能够实现你的目标。
<bean id="localhostInetAddress"
class="java.net.InetAddress"
factory-method="getLocalHost"/>
<bean id="hostname"
factory-bean="localhostInetAddress"
factory-method="getHostName"/>
当然,更简单的方法是使用Java Configuration。
@Configuration
public class InetConfig {
@Bean
public String hostname() {
return InetAddress.getLocalHost().getHostName();
}
}
您是否必须使用xml配置您的bean,还是允许您使用java注释进行配置?在第二种情况下,做你想做的事情会更容易。 –