AOP是OOP的延續,是(Aspect Oriented Programming)的縮寫,意思是面向切面編程。
主要的功能是:日誌記錄,效能統計,安全控制,交易處理,異常處理等等。
主要的意圖是:將日誌記錄,效能統計,安全控制,交易處理,異常處理等代碼從商務邏輯代碼中劃分出來,通過對這些行為的分離,我們希望可以將它們獨立到非指導商務邏輯的方法中,進而改變這些行為的時候不影響商務邏輯的代碼。
可以通過先行編譯方式和運行期動態代理實現在不修改原始碼的情況下給程式動態統一添加功能的一種技術。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。
在Spring中提供了面向切面編程的豐富支援,允許通過分離應用的商務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成商務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。可以更好的將本來不應該粘合在一起的功能分離開。
實際上J2EE容器分離了一般應用系統的一些通用功能,例如事務機制、安全機制以及對象池或線程池等效能最佳化機制。這些功能機制是每個應用系統幾乎都需要的,因此可以從具體應用系統中分離出來,形成一個通用的架構平台,而且,這些功能機制的設計開發有一定難度,同時啟動並執行穩定性和快速性都非常重要,必須經過長時間調試和運行經驗積累而成,因此,形成了專門的J2EEContainer Service器產品,如Tomcat JBoss、Websphere、WebLogic等。
BeanWrapper:
根據JavaDoc中的說明,BeanWrapper提供了設定和擷取屬性值(單個的或者是批量的),擷取屬性描述資訊、查詢唯讀或者可寫屬性等功能。不僅如此,BeanWrapper還支援嵌套屬性,你可以不受嵌套深度限制對子屬性的值進行設定。所以,BeanWrapper無需任何輔助代碼就可以支援標準JavaBean的PropertyChangeListeners和VetoableChangeListeners。除此之外,BeanWrapper還提供了設定索引屬性的支援。通常情況下,我們不在應用程式中直接使用BeanWrapper而是使用DataBinder 和BeanFactory。
通俗點講:BeanWrapper就是封裝了一個bean的行為,設定和擷取屬性值等。
BeanFactory:
Bean Factory,顧名思義,負責建立並維護Bean執行個體。
Bean Factory負責根據設定檔建立Bean執行個體,可以配置的項目有:
1. Bean屬性值及依賴關係(對其他Bean的引用)
2. Bean建立模式(是否Singleton模式,即是否只針對指定類維持全域唯一的執行個體)
3. Bean初始化和銷毀方法
4. Bean的依賴關係