使用java配置注入自动连接的依赖项失败

时间:2017-06-19 23:45:48

标签: spring

我是Spring的新手。我正在测试@Inject注释。为此,我创建了一个逻辑:

import javax.inject.Inject;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;

        class A {
          int a;

          public A(int a) {
            this.a = a;
          }
        }

        class B {
          A x;

          public B(A x) {
            this.x = x;
          }
        }

        @Configuration
        class config1 {
          A a;

          @Inject
          public void setA(A a) {
            this.a = a;
          }

          @Bean
          public B getB() {
            return new B(a);
          }
        }

        @Configuration
        class config2 {
          @Bean
          public A getA() {
            return new A(4);
          }
        }

        public class Testt {
          public static void main(String[] args) {
            ApplicationContext ctx = new AnnotationConfigApplicationContext(config1.class);
            B oa = ctx.getBean(B.class);
            System.out.println(oa.x.a);
          }
        }

但这失败了,并说错误:

Error creating bean with name 'config1': Injection of autowired dependencies failed;

请帮忙。我知道我做了一些微不足道的错误。

1 个答案:

答案 0 :(得分:0)

您只使用一个类初始化了上下文:

new AnnotationConfigApplicationContext(config1.class)

你需要告诉Spring使用第二类。

您可以添加第二个类:

new AnnotationConfigApplicationContext(config1.class, config2.class)

或者在config1中添加导入。

@Import({config2.class})