Spring-Aop學習的前提——cglib代理
這裡我們就簡單寫一個例子來看一下cglib代理:
首先先匯入cglib的jar包,cglib-nodep.jar,大家可以自行去官網下載即可。
首先建立一個介面:PersonDao
public interface PersonDao {
public void savePerson();
}
建立介面的實現類:PersonDaoImpl
public class PersonDaoImpl implements PersonDao{
@Override
public void savePerson() {
// TODO Auto-generated method stub
System.out.println("savePerson...........");
}
}
事務類:
public class Transaction {
public void beginTransaction() {
System.out.println("begin Transaction");
}
public void commit() {
System.out.println("commit...");
}
}
建立攔截器MyInterceptor:
public class MyInterceptor implements MethodInterceptor{
private Object target; //目標類
private Transaction transcation;//事務
public MyInterceptor(Object target, Transaction transcation) {
super();
this.target = target;
this.transcation = transcation;
}
/*產生代理物件*/
public Object createProxy () {
//程式碼增強類
Enhancer enhancer = new Enhancer();
enhancer.setCallback(this);//引數為攔截器
enhancer.setSuperclass(target.getClass());//生成的代理類的父類是目標類
return enhancer.create();
}
@Override
public Object intercept(Object obj, Method method, Object[] arg2, MethodProxy arg3) throws Throwable {
// TODO Auto-generated method stub
this.transcation.beginTransaction();
Object result = method.invoke(target, arg2);
this.transcation.commit();
return result;
}
測試類:
public class CglibProxyText {
public void textCglib() {
Object target = new PersonDaoImpl();
Transaction transcation = new Transaction();
MyInterceptor interceptor = new MyInterceptor(target, transcation);
PersonDaoImpl personDaoImpl = (PersonDaoImpl) interceptor.createProxy();
personDaoImpl.savePerson();
}
public static void main(String[] args) {
CglibProxyText text = new CglibProxyText();
text.textCglib();
}
}
這裡要注意:通過cglib產生的代理物件,代理類是目標類的子類
相關推薦
Spring-Aop學習的前提——cglib代理
這裡我們就簡單寫一個例子來看一下cglib代理: 首先先匯入cglib的jar包,cglib-nodep.jar,大家可以自行去官網下載即可。 首先建立一個介面:PersonDao public interface PersonDao { publ
spring aop原理 JDK動態代理和CGLIB動態代理
lan ble -- 自定義 and ets spec gen ase Spring的兩大特性是IOC和AOPIOC負責將對象動態的註入到容器,從而達到一種需要誰就註入誰,什麽時候需要就什麽時候註入的效果。理解spring的ioc也很重要。但是今天主要來和大家講講aop。A
Spring AOP學習筆記04:AOP核心實現之建立代理
上文中,我們分析了對所有增強器的獲取以及獲取匹配的增強器,在本文中我們就來分析一下Spring AOP中另一部分核心邏輯--代理的建立。這部分邏輯的入口是在wrapIfNecessary()方法中緊接著增強器的獲取之後的createProxy(): protected Object createProx
Spring AOP實驗之靜態代理
註入 ans 執行 軟件開發 動態代理 sin modified 實現 編譯 1 AOP的概念和原理 1.1 AOP原理 AOP(Aspect Oriented Programming),也就是面向方面編程的技術。AOP基於IoC基礎,是對OOP的有益補充。
Spring aop學習整理(spring in action)(一):了解AOP
進入 一起 table return 問題 匹配 核心 before cti 切面能幫助我們模塊化橫切關註點。簡而言之,橫切關註點可以被描述為影響應用多處的功能。例如,安全就是一個橫切關註點,應用中的許多方法都會涉及到安全規則。圖4.1直觀呈現了橫切關註點的概念。
Spring AOP學習
[] .com -s tca demo1 ng- cep pattern pre 什麽是AOP AOP 面向切面編程 采取橫向抽取機制,取代了傳統縱向繼承體系重復性代碼(性能監視、事務管理、安全檢查、緩存) Spring AOP使用純Java實現,不需要專門的編譯
AOP初步嘗試——cglib代理和jdk代理整合
一、代理機制 首先簡單描述一下代理機制。核心程式碼完成後,我們想給程式碼增加一些附加功能,比如日誌,攔截等,這時不應該去修改核心程式碼,我們可以通過獲取代理,在核心程式碼以外增加程式碼,實現相關功能。同樣在我們沒有原始碼或無法觸碰原始碼時,也是如此。核心功能與附加功能分開,互不干擾,稱之
Spring AOP 學習筆記
1、Spring AOP中的動態代理主要有兩種方式,JDK動態代理和CGLIB動態代理。JDK動態代理通過反射來接收被代理的類,並且要求被代理的類必須實現一個介面。JDK動態代理的核心是InvocationHandler介面和Proxy類。如果目標類沒有實現介面,那麼Spring AOP會選擇使
Spring AOP學習筆記(一):基礎概念
AOP產生背景 AOP(Aspect Oriented Programming),即面向切面程式設計,可以說是OOP(Object Oriented Programming,面向物件程式設計)的補充和完善。OOP引入封裝、繼承、多型等概念來建立一種物件層次結構,用於模擬公共行為的一個集合。不
轉:Spring AOP中的動態代理
原文連結:Spring AOP中的動態代理 0 前言 1 動態代理 1.1 JDK動態代理 1.2 CGLIB動態代理 1.2.1 CGLIB的代理用法 1.2.2 CGLIB的過濾功能
Spring AOP實現原理-動態代理
目錄 代理模式 靜態代理 動態代理 代理模式 我們知道,Spring AOP的主要作用就是不通過修改原始碼的方式、將非核心功能程式碼織入來實現對方法的增強。那麼Spring AOP的底層如何實現對方法的增強?實現的關鍵在於使用了代理模式 代理模式的作用就是為其它物件提供一種代理,以控制
Spring AOP的實現——動態代理機制
在java的動態代理中,有兩個重要的類或者介面,一個是InvocationHandler(Interface)、另一個是Proxy(Class),這一個類和介面是實現動態代理所必須的。 InvocationHandler:每一個動態代理類都必須實現InvocationHan
Spring AOP學習筆記(1):AOP基礎知識
一、 使用AOP前的經驗 在接觸AOP這種程式設計思想之前,我也有好多的編碼經歷,將業務邏輯和日誌、測試和驗證等其他需求放在一起的,這簡直是痛苦死了,每寫一個方法都得重複好多程式碼,而且這些程式碼有好多是類似的,但是不得不重寫,因為當時還是菜鳥(現在也是菜鳥),比如之前同組
[Spring]Spring AOP學習筆記(2)---5種切入方式、AOP優先順序及切面表示式的重用
Spring AOP學習筆記(2)---5種切入方式、AOP優先順序及切面表示式的重用 一、5種切入方式 學習了下Spring的AOP的五種切入方式,分別是: (1)Before ---在所攔截方法執行前執行; (2)After ---在所攔截方法執行後執行; (3)Aft
Spring AOP的底層實現-代理模式
在學習Spring的過程中,留下一下痕跡。 代理模式,其實就是讓別人做同樣的事情,但是別人卻不僅將我的事情做了,還會把他的事情也做了,換言之,這個人做的事情,是他獨有的事情和我需要做的事情的綜合。回到程式碼,那麼就是,代理類執行與委託類同樣的方法,在這方法裡代
Spring-AOP的原理-動態代理-IOC-註解配置
一:概念的介紹: 什麼叫AOP? 關鍵: 橫向重複,縱向提取; AOP能為容器中管理的物件動態生成代理物件,AOP是指程式設計不是針對某一個物件,而是針對一群物件,打個比方:就像一個一個個圓柱形,這一個個圓柱形就是一個個
Spring AOP的兩種代理方式
Spring AOP是通過為目標物件建立代理來實現的。其使用的代理方式有兩種: JDK 動態代理 (目標物件實現了介面時使用,只會代理目標介面方法) CGLIB (當目標物件沒有實現介面時只能使用CGLIB ,當然可以通過配置強制有介面的物件也使用CGLIB
基於Springboot的Spring AOP學習記錄
前段時間各種面試,aop問到就蒙逼,所以結合新學的springboot重新理一下這玩意兒,很重要啊 一、AOP概述 AOP(面對切面程式設計)是對OOP(面向物件程式設計)的補充,總體來說,程式設計正規化包含:面向過程程式設計、面向物件程式設計、函數語言
Spring AOP學習筆記(一)-AOP相關概念和基於註解方式實現AOP的規則
一、 Spring AOP 概念 其實AOP就是要將我們Aspect中的Pointcut和Target Object中的JointPoint動態的連線起來,同時我們通過Advice指明Pointcut執行的一個時機。這是個人理解 AOP相關名詞解釋
spring aop學習9:Aop的鏈式呼叫(責任鏈模式)
一.責任鏈模式 1.基本的責任鏈模式 ◆主體父類:abstract class Subject.java package com.tiglle.responsibility.chain.model; //主體 public abstract class