【问题标题】:Spring JavaConfig and annotation based injectionSpring JavaConfig 和基于注解的注入
【发布时间】:2014-09-02 12:55:50
【问题描述】:

我的 Spring 应用程序配置如下:

Class A{

  @Resource
  private B objB;
  @Resource
  private C objC;

}

Class B{}
Class C{}

@Configuration
Class SpringConfigs{
  @Bean
  public A objA(){
      return new A();
  }

  @Bean
  public B objB(){
      return new B();
  }

  @Bean
  public C objC(){
      return new C();
  }
}

我使用组件扫描来选择@Configurations。我的问题是 Spring 会在为 A 创建 bean 的同时为 B 和 C 注入 Bean。我在 A 类中使用 @Resource 但使用 new 运算符来创建 Bean,那么 Spring 会识别 A 类中的注释并注入它们吗?谢谢。

【问题讨论】:

    标签: spring dependency-injection spring-annotations spring-java-config


    【解决方案1】:

    您的应用程序将运行良好。你试过吗?

    当您的SpringConfigs 配置类被类路径扫描拾取时,将处理@Bean 注释方法以创建相关bean。

    您可能指的是一个常见的初学者错误,即手动创建 bean 并期望 Spring 意识到它必须做一些事情(例如连接依赖项或创建代理以提供其他功能)。

    您确实是在自己创建 bean,但您是在 BeanFactory 将要调用以检索 bean 实例的方法中进行的。一旦实例被添加到工厂,它将像任何其他 bean 一样进行后处理(即,例如通过 xml config 创建的那些)

    【讨论】:

    • 不,我不是指“手工制作 bean”的事情。是的,我运行了应用程序并为自动连接到另一个 bean 的 bean 获得了 NPE。可能我可能会遗漏一些东西,请仔细查看和更新​​。感谢您的回复。
    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2015-06-25
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多