java - 嵌套 bean 的 Spring 依赖注入(inject)

标签 java spring

我正在与 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)的成员变量。

reference

关于java - 嵌套 bean 的 Spring 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048462/

相关文章:

java - 如何在适配器类中传递 Intent

java - 不同 JFrame 之间的信息交换

java - Spring MVC 3 : Interceptor return view on false

java - Spring Hibernate MySQL- 50k 插入耗时 20 分钟

java - 使用 openapi 和 openapi-generator-maven-plugin 的 requestbody 中的多个文件

java - 为什么在我更改屏幕尺寸之前 JButton 不出现?

java - Jackson:有没有办法在 boolean 反序列化中忽略 0/1?

java - org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name.无法让我的springboot应用程序运行

java - Spring中需要多个相同类型的bean

java - 无法执行 com.github.eirslett