在SpringBoot火爆2019的年代,Spring框架也逐漸變成了底層。對於具體的應用,使用Spring開發的效率遠遠比不上使用SpringBoot,IOC與AOP的xml在SpringBoot中被取代,包依賴也被進一步被封裝成各個模塊。spring
簡化開發的同時帶來了更多的透明性,欲戴皇冠,必承其重。編程
以前在CSDN寫了一篇描述:https://blog.csdn.net/qq_40754146/article/details/90815333安全
在Spring的時代,就推薦使用註解而不是xml來配置,在SpringBoot中徹底實現了註解的全面佔領。框架
IOC有什麼用?性能
IOC容器的背景是構建大型應用時會用到不少類,而完成對類與類之間的各類依賴關係管理成爲了一個問題,因而IOC容器出現了。.net
IOC容器的做用就是管理類之間複雜的依賴關係。代理
用專業的名詞解釋,就是下降類之間的耦合度,方便後期開發和維護。日誌
下降耦合本質上是將類與類之間的耦合轉爲類和IOC容器之間的耦合,PS:耦合不能徹底消除,只能減少。xml
AOP中文名叫面向切面編程。對象
AOP使用動態代理實現。包括兩種方式:
關於動態代理:
關於反射:反射機制容許程序在運行期 藉助於Reflection API取得任何類的內部信息,並能直接操做任意對象的內部屬性及方法。 (最高權限)
AOP的實現本質是反射加上代理模式。
面向切面的思想本質上就是經過動態代理(反射)實現各個類的代碼控制。
依然是很抽象的一句話。。。。。
【舉個栗子】
如今有5個類,每一個類有5個方法,若是我想要在每一個方法執行完成以後打印方法名,按照沒有aop的思想就是在每一個方法後面加上logger.info或者system.out.println。
一共就須要些25行代碼,這個時候,aop登場。創建一個切面類,而後定位到這5個類的每一個方法,加一個後置通知(就是方法執行完以後會執行這個通知,本質上是一個方法)。
這樣25行的代碼簡化成了一個方法加方法體的一行代碼,若是說IOC是解決類與類之間的依賴關係(有點無形),那麼AOP是看得見能夠簡化大量代碼。
AOP的應用場景有日誌記錄,性能統計,安全控制,事務處理,異常處理等。目前用過的就是日誌處理(hhh)