有什么方法可以使用注释使用查找方法注射?

给定以下课程:

@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中声明它。我认为这不是一个好方法。

如何处理注释?

有帮助吗?

解决方案

可以使用 javax.inject.Provider. 。一切谢谢 菲尔·韦伯.

public class MySingleton {

  @Autowired
  private Provider<MyPrototype> myPrototype;

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

}

其他提示

也有可能 org.springframework.beans.factory.ObjectFactory 如果您想跟上春季API

public class MySingleton {

  @Autowired
  private ObjectFactory<MyPrototype> myPrototypeFactory;

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

您可以在 文档.

它仅在弹簧> = 4.1的情况下实现 .

最终引入了 @抬头 注解。这是 讨论 关于如何使用它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top