Подтвердить что ты не робот

Как сделать Spring Поиск метода инъекций с аннотациями?

Можно ли использовать метод поиска методом поиска с помощью аннотаций?

Учитывая следующий класс:

@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. Не думаю, что это хороший подход.

Как это сделать с аннотациями?

4b9b3361

Ответ 1

Можно использовать javax.inject.Provider. Все спасибо Фил Вебб.

public class MySingleton {

  @Autowired
  private Provider<MyPrototype> myPrototype;

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

}

Ответ 2

Также возможно с 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
  }
}

вы можете прочитать больше в документации.

Ответ 3

Он реализуется только с помощью Spring >= 4.1 См. .

Ответ 4

Наконец, представлен как аннотация @Lookup. Вот обсуждение о том, как его использовать.