我与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");
}
}
启动应用程序时没有错误,但我看到null
和MyService
的构造函数打印出dao is alive
。尝试使用@Configuration
课时,我遇到了同样的问题。似乎外部豆类的依赖性不会被注入。
THX!
答案 0 :(得分:3)
由于在调用构造函数后注入了fields和methods参数,因此不能在构造函数中使用注入的成员变量。
答案 1 :(得分:1)
我使用构造函数注入。
@Component
public class MyService {
private MyDao dao;
@Inject // javax.inject.Inject
public MyService(MyDao dao) {
System.out.println(dao);
}
}