7.1 IOC (inversion of control) – 反轉控制
1) 之前我們在學JSP的時候,在CoreServlet中,我們創建xxxDao物件是如何創建的?
IXxxDao xxxDao = new XxxDaoImpl( ) ;
這種寫法new了一個XxxDaoImpl類,這樣使得CoreServlet和Dao耦合了,
而且IXxxDao xxxDao = new XxxDaoImpl( ) ; 這句代碼
如果出現在CoreServlet的某個方法內部,那么xxxDao這個物件的生命周期就是方法的級別,
如果出現在CoreServlet的類中,也就是說xxxDao是一個屬性,那么這個xxxDao的生命周期就伴隨著CoreServletServlet的生命周期這個級別,
2) 之后我們在applicationContext.xml中定義了這個empService和empDao,然后通過決議XML和反射機制,產生EmpServiceImpl 和 EmpDaoImpl類的物件,然后存在一個map容器當中(map容器在BeanFactory中),

因此,我們改變了之前service,dao等實體物件的生命周期,控制權從程式員轉移到BeanFactory,所以BeanFactory我們可以稱為IOC容器,
7.2 DI - Dependency Injection 依賴注入
1)之前,我們在控制層出現的代碼:IEmpService empService = new EmpServiceImpl( );那么,控制層和servcie層存在耦合,
2)之后,我們將代碼修改成IEmpService empService = null; 然后,在組態檔中配置,
以前是主動new出來的,現在是IOC容器給我們new出來后,通過依賴關系給我們注入的,
當然注入可以通過三種方式來注入:1)屬性直接賦值 2)setXxx方法3)構造方法,我們采用的是第一種,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/502160.html
標籤:架構設計
上一篇:六,手寫SpringMVC框架--什么是ThreadLocal?
下一篇:訊息佇列基本原理和選型對比
