2017-06-19 235 views
-1

我是Spring的新手。我正在测试@Inject注释。对于我创建了一个逻辑:注入自动布线依赖关系失败,java配置

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; 

请帮助。我知道我犯了一些小错误。

+0

请分享完整的例外或stacktrace,它可能会有所帮助。 –

+0

你想在这里做什么? –

回答

0

你只有一个类初始化您的上下文:

new AnnotationConfigApplicationContext(config1.class) 

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

,您可以添加第二类:

new AnnotationConfigApplicationContext(config1.class, config2.class) 

还是在CONFIG1增加进口。

@Import({config2.class}) 
相关问题