我正在与 Spring 依赖注入(inject)和嵌套 bean 作斗争:有两个 bean,其中一个嵌套在另一个 bean 中。当检查外部 bean 时,我可以看到内部 bean 未注入(inject)。
主类:
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
}
}
外层 bean :
@Component
public class MyService {
@Inject // javax.inject.Inject
private MyDao dao;
public MyService() {
System.out.println(dao);
}
}
内部bean:
@Component
public class MyDao {
public MyDao() {
System.out.println("dao is alive");
}
}
启动应用程序时没有错误,但我看到 MyService
的构造函数打印出 null
并且 dao is active
。我在尝试使用 @Configuration
类时遇到了同样的问题。看起来外部 bean 依赖项不会被注入(inject)。
谢谢!
最佳答案
由于字段和方法参数是在构造函数调用后注入(inject)的,因此不能在构造函数中使用注入(inject)的成员变量。
关于java - 嵌套 bean 的 Spring 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048462/