这可以通过 xml 稍微简单地完成,详见Spring 文档的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,该 beanmyBean
由调用返回的对象填充MyClass.myStaticMethod()
。
但这只是一半,因为我们只有static
方法的结果(在您的情况下是第一次调用)。
3.3.2.3 节详细介绍了如何调用已经存在的 bean 的非静态方法ApplicationContext
。可以这样做:
<bean id="myOtherBean"
factory-bean="myBean"
factory-method="myNonStaticMethod"/>
这将在 中创建一个ApplicationContext
名称为的 bean,该 beanmyOtherBean
由调用返回的对象填充myBean.myNonStaticMethod()
,其中myBean
bean 是从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();
}
}