4

是否有捷径可以在 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>

我确信必须有一种方法可以在一个定义中做到这一点。请建议。

4

2 回答 2

8

您是否考虑过在您的MethodInvokingFactoryBean.

<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.

于 2013-04-04T20:46:58.970 回答
1

您可以尝试使用@Autowire.

在需要MyObject bean 的类中,您可以使用如下内容:

public class MyClass {

      @Autowire
      MyObject myObject;

      public void myMethodofMyClass(){
         myObject.oneMethodOfMyObject();
      }

}

您可以在弹簧参考手册(第 54 页)中找到更多信息。

于 2013-04-04T20:34:35.597 回答