2015-11-20 66 views
2

我試圖在下面定義一個類。 Spring沒有實例化bean。使用spring從內部類創建bean

@Component 
    public class A{ 
     @Component 
     public class B{ 
     } 
    } 

有什麼辦法讓Spring像上面那樣創建bean。

+0

請問答案[這裏](http://stackoverflow.com/a/24213978/2809078)幫助?內部類的構造函數需要外部類的實例,所以需要標記爲「@ Autowired」。 – ggovan

+0

[無論如何@Inject/@ Autowire內部類到外部類?](http://stackoverflow.com/questions/24213823/anyway-to-inject-autowire-an-inner-class-into-一個-外級) – AndreyS

回答

1

我不這麼認爲,因爲內部類不可能存在沒有它的封閉類。因此它只能被注入封閉的Bean中。

From Spring documentations:

的內bean定義不需要定義的ID或名稱;該容器忽略這些值。它也忽略範圍標誌。內部bean始終是匿名的,並且它們始終使用外部bean創建。不可能將內部bean注入到除了封閉bean之外的協作bean中。

我認爲它只能用於static內部類而不能用於not-static inner類。

這應該工作:

@Component 
    public class A{ 
     @Component 
     public static class B{ 
     } 
    } 
相關問題