1) 之前我們在學(xué)JSP的時候,在CoreServlet中,我們創(chuàng)建xxxDao對象是如何創(chuàng)建的?
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)雙陽免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
IXxxDaoxxxDao=newXxxDaoImpl( ) ;
這種寫法new了一個XxxDaoImpl類,這樣使得CoreServlet和Dao耦合了。
而且IXxxDaoxxxDao=newXxxDaoImpl( ) ;這句代碼
如果出現(xiàn)在CoreServlet的某個方法內(nèi)部,那么xxxDao這個對象的生命周期就是方法的級別。
如果出現(xiàn)在CoreServlet的類中,也就是說xxxDao是一個屬性,那么這個xxxDao的生命周期就伴隨著CoreServletServlet的生命周期這個級別。
2) 之后我們在applicationContext.xml中定義了這個empService和empDao,然后通過解析XML和反射機制,產(chǎn)生EmpServiceImpl和 EmpDaoImpl類的對象,然后存在一個map容器當(dāng)中(map容器在BeanFactory中)。
因此,我們改變了之前service,dao等實例對象的生命周期,控制權(quán)從程序員轉(zhuǎn)移到BeanFactory。所以BeanFactory我們可以稱為IOC容器。
1)之前,我們在控制層出現(xiàn)的代碼:IEmpServiceempService=newEmpServiceImpl( );那么,控制層和servcie層存在耦合。
2)之后,我們將代碼修改成IEmpServiceempService = null; 然后,在配置文件中配置。
以前是主動new出來的,現(xiàn)在是IOC容器給我們new出來后,通過依賴關(guān)系給我們注入的。
當(dāng)然注入可以通過三種方式來注入:1)屬性直接賦值2)setXxx方法3)構(gòu)造方法。我們采用的是第一種。