spring簡介
spring是J2EE應用程序框架,是輕量級的IoC和AOP的容器框架,主要是針對javaBean的生命周期進行管理的輕量級容器,可以單獨使用,也可以和Struts框架,mybati框架等組合使用。
IOC與DI
ioc控制反轉。把對象的創建就給spring配置。DI依賴注入,向類里面的屬性設置值。依賴注入不能單獨存在,需要在ioc基礎上完成。
屬性注入的幾種方式:
(1)構造函數注入
(2)set注入
(3)p名稱空間
對象的注入:
使用注解創建對象:
@Service,@Component,@Controller,@Repository
注解注入對象:
@Autowired?? @Resource
AOP
Aspect Oriented Programming 面向切面編程。解耦是程序員編碼開發過程中一直追求的。AOP也是為了解耦所誕生。
具體思想是:定義一個切面,在切面的縱向定義處理方法,處理完成之后,回到橫向業務流.
AOP 主要是利用動態代理模式的技術來實現的
.
有接口的情況下使用jdk代理。沒有接口的情況使用 cglib動態代理。
AOP操作術語
1? Joinpoint(連接點):在spring中這些連接點指的就是可以被增強的方法。
2.在類里面可以很多的方法增強,比如在實際的操作中,只是增強了類里面的add方法和update方法,實際增強的方法稱為切入點。
前置通知:在方法執行前通知。
后置通知:在方法執行后通知。
異常通知:在方法出現異常
最終通知:后置之后執行
環繞通知:在方法之前和方法之后通知。
3.Aspect(切面)把增強應用到具體的方法上面,這個過程稱之為切面。
AOP 的實現原理
AOP分為靜態AOP和動態AOP。靜態AOP是指AspectJ實現的AOP,他是將切面代碼直接編譯到Java類文件中。動態AOP是指將切面代碼進行動態織入實現的AOP。Spring的AOP為動態AOP,實現的技術為: JDK提供的動態代理技術 和 CGLIB(動態字節碼增強技術) 。盡管實現技術不一樣,但 都是基于代理模式 , 都是生成一個代理對象 。
使用注解操作AOP
SpringMVC
運行原理圖:
1.用戶發起請求,dispatcherServlet獲取用戶訪問的路徑。
2.dispatcherServlet去找相應的處理器。
3.dispatcherServlet調用處理器訪問controller.
4.controller調用service,返回modelAndView。
5.dispatcherServlet得到處理結果。
6.調用view解析器對model進行解析
7.將解析后的model數據傳給view顯示
8.http響應給瀏覽器。