30

有没有办法使用注解来使用查找方法注入?

给定以下课程:

@Service
public abstract class A {


    protected abstract createB();

}

为了让它工作,我必须在 spring applicationContext.xml 中声明以下内容:

<bean id="b" class="com.xyz.B">
</bean>

<bean id="a" class="com.xyz.A">
    <lookup-method name="createB" bean="b"/>
</bean>

即使我正在使用<context:component-scan base>我也必须在 XML 中声明它。我认为这不是一个好方法。

如何使用注释来做到这一点?

4

4 回答 4

29

可以使用javax.inject.Provider. 感谢菲尔·韦伯

public class MySingleton {

  @Autowired
  private Provider<MyPrototype> myPrototype;

  public void operation() {
    MyPrototype instance = myPrototype.get();
    // do something with the instance
  }

}
于 2013-05-23T13:15:16.010 回答
17

org.springframework.beans.factory.ObjectFactory如果您想跟上 Spring API 的步伐,这也是可能的

public class MySingleton {

  @Autowired
  private ObjectFactory<MyPrototype> myPrototypeFactory;

  public void operation() {
    MyPrototype instance = myPrototypeFactory.getObject();
    // do something with the instance
  }
}

您可以在文档中阅读更多内容。

于 2013-09-04T00:06:16.210 回答
13

它仅在 Spring >= 4.1 中实现,请参见票证

于 2011-01-05T15:28:04.183 回答
10

最后作为 @Lookup注解引入。这是关于如何使用它的讨论。

于 2014-11-18T10:09:05.163 回答