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