2017-06-19 10 views
-1

私は春の新機能です。私は@Inject注釈をテストしています。助けてくださいJava構成で自動従属依存のインジェクションが失敗しました

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

を:

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); 
      } 
     } 

しかし、これはというエラーで失敗します。そのために私はロジックを作成しました。私はいくつかの些細な間違いをしたことを知っています。

+0

完全な例外またはスタックトレースを共有してください。役立つことがあります。 –

+0

ここで何を達成しようとしていますか? –

答えて

0

は1つだけですクラスを使用してコンテキストを初期化:

new AnnotationConfigApplicationContext(config1.class) 

をあなたは番目のクラスを使用するために春を伝える必要があります。

あなたは番目のクラスを追加することができます

new AnnotationConfigApplicationContext(config1.class, config2.class) 

するか、CONFIG1にインポートを追加します。

@Import({config2.class}) 
関連する問題