1. 程式人生 > >配置@aspectj-autoproxy切面,生成代理物件

配置@aspectj-autoproxy切面,生成代理物件

有時候在呼叫一個方法時,可能需要在呼叫該方法之前需要做點其他的操作,比如我要做一個往資料庫中插入資料的操作,這個插入的方法有一個json資料,但是我可能在插入之前還需要往這個json引數中塞入其他的資料。這個時候spring的aspectj-autoproxy就起到了作用了。

首先可以先在配置檔案中配置一個aop,如下:

<aop:aspectj-autoproxy proxy-target-class="true" >
<aop:include name="
studentInsertAspect"/>
</aop:aspectj-autoproxy>

proxy-target-class屬性預設值為false,表示使用jdk動態代理織入增強,當配為<aop:aspectj-autoproxy  poxy-target-class="true"/>時,表示使用

CGLib

動態代理技術織入增強。不過即使proxy-target-class設定為false,如果目標類沒有宣告介面,則spring將自動使用CGLib動態代理。

<aop:include name="studentInsertAspect" />,這個地方的name為添加了@Aspect註解類名,如:

@Aspect
@Component("studentInsertAspect")
public class StudentInsertAspect{
	@Autowired
	private StudentService studentService;

	/**
	*
	**/
	@Before("execution(* com.class.service.StudentService.insert(..))")
	public void inputTestData(JoinPoint point){
  		JSONObject json = null;
        	for(Object obj : point.getArgs()){
        		if(obj instanceof JSONObject){
        			json = (JSONObject)obj;
        		}
        	}
       		if(json != null){
           		json.accumulate("studentNum","class001");
      		}
   	}
}


上面那個類用了@Before註解,是在觸發了studentService的插入方法的時候,率先觸發inputTestData這個方法,其中,插入的方法可能帶有一個json的引數,

,然後在inputTestData方法中往json中插入一個studentNum,這樣,在insert中就可以得到一個studentNum的資料。

當然還有其他的註解,有before也有after,具體的還需後續繼續瞭解學習了,spring的功能真的是很強大,希望能多多學習!

相關推薦

配置@aspectj-autoproxy切面,生成代理物件

有時候在呼叫一個方法時,可能需要在呼叫該方法之前需要做點其他的操作,比如我要做一個往資料庫中插入資料的操作,這個插入的方法有一個json資料,但是我可能在插入之前還需要往這個json引數中塞入其他的資

log4j2 不使用配置檔案,動態生成logger物件

大家平時使用Log4j一般都是在classpath下放置一個log4j的配置檔案,比如log4j.xml,裡面配置好Appenders和Loggers,但是前一陣想做某需求的時候,想要的效果是每一個任務都要有一個單獨的日誌檔案記錄下來,比如job.001.log,job.002.log這種,這種完全

Spring AOP原始碼分析(生成代理物件

AOP基本概述 Advice(通知) BeforeAdvice package org.springframework.aop; import java.lang.reflect.Method; public interface Metho

Aop原始碼分析之生成代理物件

Java中生成代理物件有兩種方式,一種是Jdk原生的動態代理,另一種就是利用Cglib。Jdk原生的動態代理只能實現對介面的代理,無法實現對Class類的代理,因此Spring中引入Cglib來實現Class類的動態代理。 Aop中代理物件是在ProxyFac

spring基於aspectj的AOP配置 aop:aspectj-autoproxy proxy-target-class="true"

精通Spring4.x--企業應用開發實戰 [email protected]("@annotation()")切點函式詳解 程式碼實現的目標是為NaugthyWaiter類的greetTo()方法實現後置增強,其中greetTo()方法被@NeedTest

Emit動態生成代理類用於監控物件的欄位修改

利用Emit動態生成代理物件監控物件哪些欄位被修改,被修改為什麼值 被Register的物件要監控的值必須是Virtual虛型別 必須使用CreateInstance建立物件 必須使用DynamicProxyGenerator.GetChangeProperties 獲取改變的值 呼叫GetChang

spring aop切面動態代理xml配置實現

上次我已經寫過aop用註解實現的這次是用配置實現,個人感覺配置實現比較好,畢竟程式是給人看的嗎,配置裡寫的一清二楚,別人看來也好懂,而且配置修改起來也比較容易,便於後期維護及修改,而才用註解方式的修改,需要修改註解,或者重寫實現類,比較麻煩,建議採用配置方式實現,至於效能方

利用Hibernate物件配置資訊自動匯出生成表結構

package cn.com.justin.hibernate; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; /**  * 執行匯出操作,hi

Spring進階之路(10)-Advice簡介以及通過cglib生成AOP代理物件

Advice簡介 1. Before:在目標方法執行之前執行織入,如果Before的處理中沒有進行特殊的處理,那麼目標方法最終會執行,但是如果想要阻止目標方法執行時,可以通過丟擲一個異常來實現,Be

AOP代理物件生成方式

1 AbstractAutoProxyCreator 類分析 /** * Create a proxy with the

mybatis原始碼學習:從SqlSessionFactory到代理物件生成

[toc] # 一、根據XML配置檔案構建SqlSessionFactory 一、首先讀取類路徑下的配置檔案,獲取其位元組輸入流。 二、建立SqlSessionFactoryBuilder物件,呼叫內部的build方法。`factory = new SqlSessionFactoryBuilder().bu

自動生成代理

ase static sta public question desc cto cape proxy WebApiProxy-Generate-CSharp public static string AssemblyDirectory {

JDK動態代理,動態生成代理類。

loader equals pri out 接口 作用 emc throwable int 1.動態代理涉及到的類 (1) Java.lang.reflect.Proxy類,作用:動態生成代理類和對象 (2) Java.lang.reflect.InvocationHand

(轉)Mybatis MapperScannerConfigurer 自動掃描 將Mapper接口生成代理註入到Spring

失效 @override get proc 所有 actual sample bstr frame   Mybatis MapperScannerConfigurer 自動掃描 將Mapper接口生成代理註入到Spring   Mybatis在與Spring集成的時候可以配

centos 橋接配置 設置網絡代理 lnmp搭建

onf 修改配置 代理 info 重啟 ipv inf ble 藍色 一、橋接配置 centos設置 編輯-》虛擬網絡編輯器-》橋接模式-》還原默認設置 虛擬機-》設置-》網絡適配器-》橋接 cd /etc/sysconfig/network-scripts/ 備

使用XAMPP配置Apache服務器反向代理

服務端 ima admin min ces 代理 正常 識別 doc                                                                      Timor-M 2018-6-17 11:58:03 前言 反向

Spring AOP的實現:建立AopProxy代理物件

        前面我們講述了AOP的基本知識以及在Spring AOP機制中的一些基本的資料結構及其功能。下面開始正式的講述Spring AOP的實現部分。 來看一下這個以ProxyFactory為中心的繼承關係圖 可以將P

動態載入Dll時,通過Type生成物件

原文: 動態載入Dll時,通過Type生成類物件 轉:http://www.cnblogs.com/zfanlong1314/p/4197383.html “反射”其實就是利用程式集的元資料資訊。 反射可以有很多方法,編寫程式時請先匯入 System.Reflection 名稱空間。

aop aspectj autoproxy / 的作用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

獲取動態代理物件

JDK獲取代理物件 1 package isoft.proxy; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 import java.lang.reflect.Pr