2

ドメインクラスに preConstruction=true を使用して、次のようなコンストラクターで自動配線されたフィールドを使用できるようにすることができます。

@Configurable(preConstruction=true)
public class MyDomain {

  @Autowired private MyContext context;

  public MyDomain() {
    context.doSomething(this); // access the autowired context in the constructor
  }

}

しかし、コンストラクター注入とは別に、 @Repository や @Service などの通常のステレオタイプ アノテーションを使用して、クラス内の自動配線されたフィールドにアクセスしたい場合の preConstruction の等価性は何ですか (現在、ここで spring 3.x を使用しています..) ?

@Repository
public class MyDomainRepository {

  @Autowired private MyContext context;

  public MyDomain() {
    // cannot access the autowired context in the constructor
    context.doSomething(this); 
  }

}
4

1 に答える 1

1

このようなものは通常の Spring Bean では利用できないと思いますが、この問題を解決する通常の方法は@PostConstruct、コンストラクターの代わりにアノテーション付きメソッドを使用することです。

@PostConstruct
public void init() {
    context.doSomething(this);    
} 

このメソッドは、すべての依存関係が注入された後に Spring によって呼び出されます。

于 2012-07-30T07:28:54.893 に答える