30

注釈を使用して Lookup Method Injection を使用する方法はありますか?

次のクラスがあるとします。

@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です。Phil Webbに感謝します。

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.ObjectFactorySpring 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 に答える