2014-01-10 174 views
0

我正在與Spring依賴注入和嵌套的Bean戰鬥:有兩個bean,其中一個嵌套在另一箇中。當檢查外部的bean時,我可以看到內部的bean沒有被注入。嵌套bean的彈性依賴注入

主類:

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

外豆:

@Component 
public class MyService { 

    @Inject // javax.inject.Inject 
    private MyDao dao; 

    public MyService() { 
    System.out.println(dao); 
    } 
} 

內豆:

@Component 
public class MyDao { 

    public MyDao() { 
    System.out.println("dao is alive"); 
    } 
} 

有啓動應用程序時沒有錯誤,但我看到nullMyService和的構造函數打印出來。當使用@Configuration類時,我遇到了同樣的問題。看起來外部的bean依賴不會被注入。

Thx!

回答

1

我使它與構造函數注入一起工作。

@Component 
public class MyService { 

    private MyDao dao; 

    @Inject // javax.inject.Inject 
    public MyService(MyDao dao) { 
    System.out.println(dao); 
    } 
} 
3

由於字段和方法參數是在調用構造函數後注入的,所以不能在構造函數中使用注入的成員變量。

reference