真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解在Spring中如何使用AspectJ來實(shí)現(xiàn)AOP

AspectJ 是通過注解來描述切點(diǎn)與增強(qiáng)的。

港南網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),港南網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為港南1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的港南做網(wǎng)站的公司定做!

1 開發(fā)環(huán)境要求

因?yàn)橐褂米⒔?,所以請確保使用的 Java5.0 及以上版本。

引入 AspectJ 相關(guān)類庫:


 org.aspectj
 aspectjrt
 ${aspectj.version}


 org.aspectj
 aspectjweaver
 ${aspectj.version}


 org.aspectj
 aspectjtools
 ${aspectj.version}


 aopalliance
 aopalliance
 ${aopalliance.version}

2 編程方式

@Aspect//標(biāo)識切面

public class PreRentAspect {
 /**
  * 增強(qiáng)邏輯
  */
 @Before("execution(* rent(..))")//定義切點(diǎn)與增強(qiáng)類型
 public void beforeRent() {
  System.out.println("開始執(zhí)行租賃動(dòng)作");
 }
}

這個(gè)切面只是一個(gè)普通的 POJO,只不過加了 @Aspect 注解。

@Before("execution(* rent(..))") 中的 @Before 表示增強(qiáng)類型是前置增強(qiáng),它的內(nèi)容是 @AspectJ 切點(diǎn)表達(dá)式,這里表示的是在目標(biāo)類的 rent() 方法上織入增強(qiáng), rent() 可以包含任意入?yún)⒑腿我獾姆祷刂怠?/p>

帶  @Aspect 的類,通過注解與代碼,將切點(diǎn)、增強(qiáng)類型和增強(qiáng)的橫切邏輯整合到了一起,是不是很方便呀O(∩_∩)O哈哈~

單元測試:

AspectJProxyFactory factory = new AspectJProxyFactory();

//設(shè)置目標(biāo)類
factory.setTarget(new User());

//添加切面類
factory.addAspect(PreRentAspect.class);

User proxy = factory.getProxy();
String userId = "001";
proxy.rent(userId);
proxy.back(userId);

輸出結(jié)果:

--開始執(zhí)行租賃動(dòng)作--
User:租賃【充電寶】
User:歸還【充電寶】

3 配置方式










單元測試:

ApplicationContext context = new ClassPathXmlApplicationContext(spring.xml");
User user = (User) context.getBean("user");
String userId = "001";
user.rent(userId);
user.back(userId);

輸出結(jié)果與編程方式完全相同。

也可以基于 Schema 的 aop 命名空間進(jìn)行配置:

<?xml version="1.0" encoding="UTF-8"?>


 
 

 
 


 
 

這樣的配置更加簡潔。其實(shí)在 內(nèi)部已經(jīng)采用了自動(dòng)代理模式啦 O(∩_∩)O哈哈~

proxy-target-class 屬性,默認(rèn)為 false ,表示使用 JDK 動(dòng)態(tài)代理技術(shù)織入增強(qiáng);此值為 true 則表示使用 CGLib 動(dòng)態(tài)代理技術(shù)織入增強(qiáng) 。 如果目標(biāo)類沒有聲明接口,那么即使  proxy-target-class 設(shè)置為 false,也會自動(dòng)使用 CGLib 動(dòng)態(tài)代理織入增強(qiáng)的喲O(∩_∩)O哈哈~

基于 Java5.0+ 的項(xiàng)目,建議使用 AspectJ 來配置切點(diǎn)與增強(qiáng),因?yàn)檫@樣更簡潔、也更直接。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前題目:詳解在Spring中如何使用AspectJ來實(shí)現(xiàn)AOP
當(dāng)前網(wǎng)址:http://weahome.cn/article/jeosej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部