Spring依赖注入嵌套bean

时间:2014-01-10 15:44:58

标签: java spring

我与Spring Dependency Injection和嵌套bean打架:有两个bean,其中一个嵌套在另一个bean中。在检查外豆时,我可以看到内豆没有被注射。

主要班级:

public class Main {

  public static void main(String[] args) {
    AnnotationConfigApplicationContext ctx
      = new AnnotationConfigApplicationContext("org.acme");

    MyService myService = ctx.getBean(MyService.class);
    // do something with myService
  }
}

外豆:

@Component
public class MyService {

  @Inject // javax.inject.Inject
  private MyDao dao;

  public MyService() {
    System.out.println(dao);
  }
}

内豆:

@Component
public class MyDao {

  public MyDao() {
    System.out.println("dao is alive");
  }
}

启动应用程序时没有错误,但我看到nullMyService的构造函数打印出dao is alive。尝试使用@Configuration课时,我遇到了同样的问题。似乎外部豆类的依赖性不会被注入。

THX!

2 个答案:

答案 0 :(得分:3)

由于在调用构造函数后注入了fields和methods参数,因此不能在构造函数中使用注入的成员变量。

reference

答案 1 :(得分:1)

我使用构造函数注入

@Component
public class MyService {

  private MyDao dao;

  @Inject // javax.inject.Inject
  public MyService(MyDao dao) {
    System.out.println(dao);
  }
}