1. 程式人生 > >spring學習教程-Spring中AOP的實現

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學習教程-SpringAOP實現

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可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部

SpringAOP實現的兩種方式之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(原型)作用域之外,另外一種重要的作用域——使用者自定義