日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring的AOP-AspectJ注解方式

發(fā)布時間:2024/7/23 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring的AOP-AspectJ注解方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

Spring的AOP-AspectJ注解方式

1.創(chuàng)建類,在類里面定義方法

2.創(chuàng)建增強(qiáng)類

3.進(jìn)行通知的配置

(1)在Spring 配置文件中,開啟直接掃描

(2)使用注解創(chuàng)建User 和 UserProxy 對象

(3)在增強(qiáng)類上面添加注解@Aspect

(4)在Spring 配置文件中開啟生成代理對象

4.配置不同類型的通知

(1)在增強(qiáng)類的里面,在作為通知方法上面添加通知類型注解,使用切入點(diǎn)表達(dá)式配置

5.測試:

? ? ? ? ?全部進(jìn)行測試:

? ? ? ? ?測試結(jié)果:

觀察:

7.如果有多個增強(qiáng)類同時對一個方法進(jìn)行增強(qiáng),可以設(shè)置增強(qiáng)類的優(yōu)先級

(1)在增強(qiáng)類上面添加注解@Order(數(shù)字類型值)

??結(jié)果:


Spring的AOP-AspectJ注解方式

(需要看上一章把xjar包都導(dǎo)入才可以執(zhí)行以下)

1.創(chuàng)建類,在類里面定義方法

新建一個aop_annotation包

在aop_annotation包內(nèi)新建一個User類

User類代碼如下:

package com.lbj.spring5.aop_annotation;public class User {public void add(){System.out.println("add。。。");} }

?

2.創(chuàng)建增強(qiáng)類

package com.lbj.spring5.aop_annotation;//增強(qiáng)的類 public class UserProxy {//前置通知public void before(){System.out.println("before");} }

?

3.進(jìn)行通知的配置

(1)在Spring 配置文件中,開啟直接掃描

bean2.xml:

<?xml version="1.0" encoding="UTF-8"?> <!--名稱空間--> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!--開啟注解掃描/開啟組件掃描--><context:component-scan base-package="com.lbj.spring5.aop_annotation"></context:component-scan> </beans>

?

(2)使用注解創(chuàng)建User 和 UserProxy 對象

一個是被增強(qiáng)的User類

一個是增強(qiáng)的UserProxy類

?

(3)在增強(qiáng)類上面添加注解@Aspect

?

(4)在Spring 配置文件中開啟生成代理對象

?

?

4.配置不同類型的通知

(1)在增強(qiáng)類的里面,在作為通知方法上面添加通知類型注解,使用切入點(diǎn)表達(dá)式配置

package com.lbj.spring5.aop_annotation;import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component;//增強(qiáng)的類 @Component @Aspect //生成代理對象 public class UserProxy {//前置通知//@Before注解表示作為前置通知@Before(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void before(){System.out.println("before");} }

?

5.測試:

注意事項(xiàng):當(dāng)我們使用了maven搭建項(xiàng)目的時候,bean1.xml文件需要到resources文件里面才能被使用

測試代碼:

package com.lbj.spring5.test;import com.lbj.spring5.aop_annotation.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestAop {@Testpublic void testAopAnnotation(){//加載配置文件ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");//得到對象,引入依賴User user = context.getBean("user", User.class);//調(diào)用對象的方法user.add();} }

測試結(jié)果:?

?

全部進(jìn)行測試:

package com.lbj.spring5.aop_annotation;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component;//增強(qiáng)的類 @Component @Aspect //生成代理對象 public class UserProxy {//前置通知//@Before注解表示作為前置通知@Before(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void before(){System.out.println("before...");}//最終通知@After(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void after(){System.out.println("after...");}//后置通知、返回通知@AfterReturning(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void afterReturning(){System.out.println("afterReturning...");}//異常通知@AfterThrowing(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void afterThrowing(){System.out.println("afterThrowing...");}//環(huán)繞通知@Around(value = "execution(* com.lbj.spring5.aop_annotation.User.add(..))")public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{System.out.println("beforeAround...");//被增強(qiáng)的方法執(zhí)行proceedingJoinPoint.proceed();System.out.println("afterAround...");} }

測試類:

package com.lbj.spring5.test;import com.lbj.spring5.aop_annotation.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Created by 14811 on 2020/12/23.*/ public class TestAop {@Testpublic void testAopAnnotation(){//加載配置文件ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");//得到對象,引入依賴User user = context.getBean("user", User.class);//調(diào)用對象的方法user.add();} }

?

測試結(jié)果:

?

?

手動測試異常類:

明顯10/0 是異常的

package com.lbj.spring5.aop_annotation;import org.springframework.stereotype.Component;//被增強(qiáng)的類 @Component public class User {public void add(){int i=10/0;System.out.println("add...");} }

測試結(jié)果:

?

觀察:

after不管有沒有異常都會執(zhí)行

afterReturning 只要出現(xiàn)異常就不會執(zhí)行

?

6.相同的切入點(diǎn)抽取

作用是:把一些重復(fù)寫的寫成公共部分

?

進(jìn)行方法調(diào)用即可

?

?

7.如果有多個增強(qiáng)類同時對一個方法進(jìn)行增強(qiáng),可以設(shè)置增強(qiáng)類的優(yōu)先級

(1)在增強(qiáng)類上面添加注解@Order(數(shù)字類型值)

數(shù)字類型值:越小,優(yōu)先等級越高

對比:?

?

結(jié)果:

?

?

8.完全注解開發(fā):

(1)創(chuàng)建配置類,不需要創(chuàng)建xml配置文件

@Configuration

@ComponentScan(basePackages={''包路徑''})

@EnableAspectJAutoProsy(proxyTargetClass=true)

public class ConfigAop{

}

?

總結(jié)

以上是生活随笔為你收集整理的Spring的AOP-AspectJ注解方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 玖玖爱精品 | 国产一区二区三区福利 | 国产人妖一区二区三区 | 欧美久久综合网 | 亚洲人成电影网 | 欧美狠狠操 | ww成人 | 国产精品日 | 欧美成人免费在线观看 | 人体裸体bbbbb欣赏 | 欧美亚洲精品一区 | 毛片视频观看 | 久操视频在线观看 | av免费看网址 | 亚洲伊人av | 69av网站| 懂色av一区二区三区四区 | 国产一区二区三区四区五区六区 | 欧洲毛片| 国产剧情在线一区 | 国产午夜成人久久无码一区二区 | 白丝久久| 9l视频自拍九色9l视频 | 亚洲视频二区 | 久热精品视频在线播放 | 网址在线观看你懂的 | 老熟妇一区二区三区啪啪 | 麻豆视频一区二区三区 | 亚洲综合影院 | 中国成熟妇女毛茸茸 | 色婷婷综合久久 | 老司机激情影院 | 精品91视频 | 欧洲性生活片 | 国产又粗又长又黄视频 | 亚洲一区二区三区香蕉 | 中文字幕专区 | 91蝌蚪视频在线观看 | 三级欧美韩日大片在线看 | 高清国产一区 | 国产一级二级三级精品 | 亚洲国产欧美日韩在线 | 午夜爱爱毛片xxxx视频免费看 | www.在线观看视频 | 亚洲乱码一区二区三区 | 人人妻人人做人人爽 | 久久精品动漫 | av导航网址 | 亚洲一区二区三区四区视频 | 樱花草av | 草久视频在线观看 | 亚洲成人91 | 午夜精品免费观看 | 国产成人在线观看免费网站 | 久久精品性 | 日韩毛片在线视频 | 午夜鲁鲁 | 免费成人在线视频观看 | 中文字幕日韩精品一区 | 久久国产经典 | 久久久久高清 | 免费在线黄色网址 | 正在播放久久 | 国产精品爽爽久久 | 人人爽久久涩噜噜噜网站 | 天天操天天干视频 | 婷婷二区| 国产亚洲一区二区在线 | 18成人免费观看网站 | 欧美一性一乱一交一视频 | 97视频| 日p免费视频 | 婷婷亚洲五月色综合 | 五月天av影院 | 少妇高潮灌满白浆毛片免费看 | 91看片网站 | 一级的大片 | 欧美性插插 | 高潮毛片无遮挡高清免费 | 在线看黄色网 | 日批av| 午夜精品久久久久久久99黑人 | 午夜激情影院 | 国产欧美日韩三区 | 欧美久久网 | 欧美生活一级片 | 亚洲免费视频一区二区 | 欧美一级大片在线观看 | 天天舔天天摸 | 久久国产精品免费视频 | 久久久永久久久人妻精品麻豆 | 老女人人体欣赏a√s | 人成在线免费视频 | 中国videosex高潮hd | 亚洲国产中文字幕 | 深夜视频免费在线观看 | 国内爆初菊对白视频 | 精品日日夜夜 | 人人av在线|