日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

什么是 AOP?對于 Spring IoC 和 AOP 的理解?

作者:趙同學& 更新時間: 2023-07-07 編程語言

什么是 AOP?

AOP(Aspect-Oriented Programming),即 面向切面編程,

它與OOP( ObjectOriented Programming, 面向對象編程) 相輔相成,提供了與OOP 不同的抽象軟件結構的視角

OOP 中, 我們以類(class)作為我們的基本單元

AOP 中的基本單元是 Aspect(切面)

對于 Spring IOC 和 AOP 的理解?

IOC

IOC(Inverse of Control:控制反轉)是一種設計思想,就是將原本在程序中手動創建對象的控制權,交由Spring框架來管理。

IOC 在其他語言中也有應用,并非 Spring 特有。

IOC 容器是 Spring 用來實現 IOC 的載體,IOC 容器實際上就是個Map(key,value),Map 中存放的是各種對象。

對象之間的相互依賴關系交給IOC 容器來管理,并由 IoC 容器完成對象的注入,簡化開發。

IOC 容器就像是一個工廠一樣,當需要創建一個對象的時候, 只需要配置好配置文件/注解即可,完全不用考慮對象是如何被創建出來的。 在實際項目中一個 Service 類可能有幾百甚至上千個類作為它的底層, 假如我們需要實例化這個 Service,可能要每次都要搞清這個 Service 所有底層類的構造函數,這可能會把人逼瘋。如果利用IOC 的話,你只需要配置好,然后在需要的地方引用就行了,這大大增加了項目的可維護性且降低了開發難度。

Spring 時代一般通過 XML 文件來配置 Bean,后來開發人員覺得 XML 文件來配置不太好,于是 SpringBoot 注解配置就慢慢開始流行起來。

Spring IOC 初始化過程

xml--讀取-->Resource--解析-->BeanDefinition--注冊-->BeanFactory


AOP

AOP(Aspect-Oriented Programming:面向切面編程)

能夠將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任(例如事務處理、日志管理、權 限控制等)封裝起來,便于減少系統的重復代碼,降低模塊間的耦合度,并有利于未來的可拓展性和可維護性。

Spring AOP就是基于動態代理的,

如果要代理的對象,實現了某個接口,那么Spring AOP會使用JDK Proxy,去創建代理對象,而對于沒有實現接口的對象,就無法使用 JDK Proxy 去進行代理了,

這時候Spring AOP會使用 Cglib ,這時候Spring AOP會使用 Cglib 生成一個被代理對象的子類來作為代理,如下圖所示:

當然也可以使用 AspectJ ,Spring AOP 已經集成了AspectJ ,AspectJ 是 Java 生態系統中最完整的 AOP 框架了。

使用 AOP 之后可以把一些通用功能抽象出來,在需要用到的地方直接使用即可,這樣大大簡化了代碼量。我們需要增加新功能時也方便,這樣也提高了系統擴展性,日志功能、事務管理等等場景都用到了 AOP 。 


原文鏈接:https://blog.csdn.net/qq_52963857/article/details/131586602

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新