是否有一种在Spring xml配置文件中实现以下功能的捷径。
new MyObject().getData()
而不是
Object obj = new MyObject();
obj.getData();
我知道如何在第二种情况下这样做。
<bean id="obj" class="MyObject" />
<bean id="data" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject"><ref local="obj" /></property>
<property name="targetMethod"><value>getData</value></property>
</bean>
我确信必须有一种方法可以在单一定义中执行此操作。请建议。
答案 0 :(得分:7)
您是否考虑在MethodInvokingFactoryBean
中使用匿名bean?
<bean id="data" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject"><bean class="MyObject" /></property>
<property name="targetMethod"><value>getData</value></property>
</bean>
除了没有中间bean定义这一事实外,这基本上等同于你所拥有的。我不确定MyObject
实例是否会在您的ApplicationContext
中,所以如果您需要它,您可能需要查看它。
答案 1 :(得分:1)
您可以尝试使用@Autowire
。
在需要 MyObject bean的类中,您可以使用以下内容:
public class MyClass {
@Autowire
MyObject myObject;
public void myMethodofMyClass(){
myObject.oneMethodOfMyObject();
}
}
您可以在spring reference manual(第54页)中找到更多信息。