java中成員變量productDao并沒有初始化,為什么可以調用方法?
問題描述
問題解答
回答1:Autowired修飾了該變量,Spring容器中獲取對應的Bean設置為該變量的值。
回答2:你使用了 Spring 框架,又用 @Controller 注解由 Spring 管理該 ProductController,當 ProductController 實例化后會搜索 @Autowired 并注入被 Spring 管理的其他實例。
回答3:productDao 上面使用 @Autowired 注解,意思就是從 Spring 上下文中自動注入實例.
Spring 上下文中類都是單例, 啟動后這些類都會在上下文中初始化好,所以你在 ProductController 中可以直接調用.
回答4:這是被自動注入的,ProductDaoFacade應該被聲明為了一個bean。
ps:ProductDaoFacade這個代碼寫得真是太奇怪了,明明是個interface還facade(這是一個設計模式)。同時,還放了那么多常量,這是典型的constant interface。簡單來說,建議使用枚舉類。如果想深入了解一下,建議參考effective java中的建議之一————接口只用于定義類型。
回答5:spring 在包掃描時 發現 @Controller 注解 將controller類進行了管理維護 在發現@Autowired后 啟動了裝配機制并根據改屬性類型在Spring 管理的Bean的上下文中進行了查找 進行了注入 專業名詞叫做IOC
回答6:這個叫春的框架 幫你做了啊<_<
