Это можно сделать несколько просто с помощью xml, как указано в 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
с именем myBean
, который населен возвращенного объекта от invokation из MyClass.myStaticMethod()
.
Но это только на полпути, так как у нас есть только результат метода static
(первый звонок в вашем случае).
В разделе 3.3.2.3 подробно описаны способы вызова нестатического метода компонента, который уже находится в ApplicationContext
. Это может быть сделано как так:
<bean id="myOtherBean"
factory-bean="myBean"
factory-method="myNonStaticMethod"/>
Это создаст компонент в ApplicationContext
с именем myOtherBean
, который населен возвращенным объектом из invokation из myBean.myNonStaticMethod()
, где 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 или вы можете использовать конфигурацию с аннотациями java? Во втором случае было бы легче делать то, что вы хотите. –