创建一个新对象并调用方法弹簧配置

时间:2013-04-04 20:25:13

标签: java spring

是否有一种在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>

我确信必须有一种方法可以在单一定义中执行此操作。请建议。

2 个答案:

答案 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页)中找到更多信息。