spring學習教程-Spring中AOP的實現
Spring中AOP的實現
一.AOP(Aspect Oriented Programming) 面向切面程式設計
(1). spring中AOP功能的實現有以下倆種情況:
1.如果目標物件實現了介面,預設情況下會採用JDK的動態代理來實現AOP功能
2.如果目標物件沒有實現介面,spring會使用CGLIB的庫來實現代理類實現AOP功能
注:spring會在JDK動態代理和CGLIB之間自動選擇
(2)理解aop(面向切面程式設計) 我們學習java應該聽說過面向物件程式設計,這是一種程式設計思想,思想的主體就是物件。同理,面向切面程式設計的主體也就是切面。所以理解切面就重要了。我先介紹一個概念:主邏輯業務和系統級邏輯業務。主邏輯業務就是非常重要的邏輯業務,比如一個銀行的軟體系統的主邏輯業務就是存錢,取錢,貸款,收款等業務,是軟體的主要功能。在這些邏輯的基礎上我們會有日誌功能,列印功能等一些輔助業務,這就是系統邏輯業務,不是太重要,但必須要的業務。
理解AOP必須有分層的概念,咋樣分層??比如轉賬是主業務邏輯,轉賬的步驟:轉賬人金額減,被轉賬人金額加。這是從這裡倆步的中間切開,轉賬人金額減後為切面,被轉賬人金額加之前為切面,這就是倆個切面。如果邏輯比較繁瑣,切面就會跟多,所以說“”切“”是切的業務邏輯,將業務邏輯或者說程式碼邏輯切成一段一段的,每一段的開頭和末尾就是切面。在這個切面上,在不影響主邏輯業務的基礎上,加入其它的操作,比如做日誌等。這就是面向切面程式設計。
認識AOP中的一些基本概念,然後在一個一個的例子中,不斷的加強對這些概念的理解,同時要能自己表述出每個概念的含義
AOP 面向切面程式設計
aspect
切面/切面類
joinPoint
連線點
在spring的aop中只有 類中的方法 可以做連線點,每一個方法都可以是一個連線點.
pointCut
切入點
一組連線點的集合
advice
通知/攔截器
用來控制切面類將來到底是織入到切入點的前面、後面或者是拋異常的時候。
前置通知,後置通知,環繞通知,返回後通知,拋異常通知。
adivsor
增強器
用來篩選類中的哪些方法是我們的連線點(哪些方法需要被攔截).
target
目標物件
proxy代理物件
wave織入
結合這些概念,我們在對號入座一下我說的轉賬的例子,切面就是轉賬人金額減後,被轉賬人金額加之前。連線點就是減金額或者加金額的方法。切入點就是統稱,減金額,加金額。通知就是應該在減金額前面加日誌??還是後面加??通知會指定在哪裡加。adivsor更像是篩選器,後面慢慢理解。織入其實就是加入,好像挺起來更高大。
相關推薦
spring學習教程-Spring中AOP的實現
Spring中AOP的實現 一.AOP(Aspect Oriented Programming) 面向切面程式設計 (1). spring中AOP功能的實現有以下倆種情況:1.如果目標物件實現了介面,預設情況下會採用JDK的動態代理來實現AOP功能2.如果目標物件沒有實
Spring學習筆記四(AOP中的通知引數和註解開發)
1.前言 上一篇部落格介紹瞭如何通過AOP來切入我們想實現的公共性的功能,這篇部落格來講一下,當我們攔截到方法後,如何來獲取通知引數。這也是AOP的精髓所在,通過AOP可以實現偷樑換柱的功能。我
Spring基礎學習教程(Spring AOP教程)-04
一、概念 AOP(Aspect Oriented Programming):面向切面程式設計。 面向切面程式設計(也叫面向方面程式設計),是目前軟體開發中的一個熱點,也是spring框架中的一個重要內容。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部
Spring中AOP實現的兩種方式之JDK和cglib的動態代理
AOP的實現原理: 都是基於代理模式,都是生成一個大代理物件 靜態AOP: AspectJ實現的AOP, 將切面程式碼直接編譯到Java類檔案中 --- 實現: JDK提供的動態代理技術 動態AOP: 將切面程式碼進行動態織入實現的AOP --- Spring的AOP為動態
(13)Spring學習記錄---Spring_bean(AOP基礎)
先來實現一個例項 1.建立介面ArithmeticCalulator public interface ArtithmeticCaclulator { int add(int i,int j); int sub(int i,int j); int
(13)Spring學習記錄---Spring_bean(AOP和通知)
springaop 1.jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar co
Spring學習-24:Spring中的JDBC Template(JDBC模板):預設連線池、DBCP連線池、C3P0池的配置
上一講中,我們編寫的測試類如下所示: package com.js.demo1; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springfram
Spring Boot自定義註解+AOP實現日誌記錄
訪問Controller列印的日誌效果如下:*********************************Request請求*************************************** ClassName : com.xxx.app.xxx.a
Spring 學習——基於Spring WebSocket 和STOMP實現簡單的聊天功能
本篇主要講解如何使用Spring websocket 和STOMP搭建一個簡單的聊天功能專案,裡面使用到的技術,如websocket和STOMP等會簡單介紹,不會太深,如果對相關介紹不是很瞭解的,請自行查閱相關知識。 本篇的專案主要是一個學習Spring we
spring學習教程5-spring容器管理bean的生命週期
例如:我們需要從容器中獲得一個Bean的物件:1、容器建立該Bean的物件(預設呼叫無參構造器) 2、容器給這個Bean物件注入依賴(預設是set方式) 3、如果這個Bean已經實現了BeanNameAware介面,容器會呼叫它實現的setBeanName(String)方法,此
Spring學習筆記-Spring容器中的Bean
1.Spring容器中的Bean 從本質上來看Spring容器就是一個超級大工廠,Bean就是工廠的產品,能產生哪些產品是根據我們配置檔案的配置來的。對於我們開發者來說,使用Spring容器主要做兩件事:1,定義自己的Bean,2配置Bean。對於Spring
Spring系列教程六:AOP詳細講解
AOP 概述 什麼是 AOP AOP:全稱是 Aspect Oriented Programming 即:面向切面程式設計
spring5 原始碼深度解析----- Spring事務 是怎麼通過AOP實現的?(100%理解Spring事務)
此篇文章需要有SpringAOP基礎,知道AOP底層原理可以更好的理解Spring的事務處理。 自定義標籤 對於Spring中事務功能的程式碼分析,我們首先從配置檔案開始人手,在配置檔案中有這樣一個配置:<tx:annotation-driven/>。可以說此處配置是事務的開關,如果沒有此處配
spring學習9 Spring工作原理及其作用
支持 上下 構建 並且 tro 配置管理 模塊 operate 有助於 1.springmvc請所有的請求都提交給DispatcherServlet,它會委托應用系統的其他模塊負責負責對請求進行真正的處理工作。 2.DispatcherServlet查詢一個或多個Han
Spring學習(十三)-----Spring 表達式語言(Spring EL)
ins eth 取模 version tlist nbsp contex 包括 title 本篇講述了Spring Expression Language —— 即Spring3中功能豐富強大的表達式語言,簡稱SpEL。SpEL是類似於OGNL和JSF EL的表達式語言
spring學習七 spring和dynamic project進行整合
啟動 exti 容器 face jar servle 過程 eve ebs spring和web項目進行整合,其實就是在項目啟動時,就創建spring容器,然後在servlet中使用spring容器進行開。 註意:為了頁面可以訪問到servlet,因此servlet必須
spring學習 六 spring與mybatis整合
spring整合 acl nfa stat 工廠設計 eas ctype tin http 在mybatis學習中有兩種配置文件 :全局配置文件,映射配置文件。mybatis和spring整合,其實就是把mybatis中的全局配置文件的配置內容都變成一個spring容器
Spring學習一(spring概念和ioc入門)
Spring概念 Spring是一個開源輕量級框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Des
Spring學習之Spring三種裝配機制:(二)顯示裝配bean
今天我們介紹一下Spring三種裝配機制中的另外兩種裝配方式:JavaConfig和XML配置,這兩種方式區別於自動化裝配方式都屬於顯示裝配。 1、Java程式碼裝配bean 首先,我們通過在Config類中使用@Bean註解來宣告bean; @Bean註
Spring學習筆記——Spring Scope(作用域)詳解
引言 在Spring學習筆記 —— 從IOC說起中,曾經提到過Spring中的Bean是根據Scope(作用域)來生成的,但是一直都沒有詳細解釋過,除了Singleton(單例)和prototype(原型)作用域之外,另外一種重要的作用域——使用者自定義