這可以通過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註釋進行配置?在第二種情況下,做你想做的事情會更容易。 –