SpringAop中AspectJ框架的切入點(diǎn)表達(dá)式
1.AspectJ簡介
- AspectJ是一個(gè)基于Java語言的AOP框架
- Spring2.0以后新增了對AspectJ切點(diǎn)表達(dá)式支持
- @AspectJ 是AspectJ1.5新增功能,通過JDK5注解技術(shù),允許直接在Bean類中定義切面
- 新版本Spring框架,建議使用AspectJ方式來開發(fā)AOP
- 主要用途:自定義開發(fā)
2.切入點(diǎn)表達(dá)式
execution()
用于描述方法
語法:execution(修飾符 返回值 包.類.方法名(參數(shù)) throws異常)
修飾符,一般省略
| public | 公共方法 |
| * | 任意 |
返回值,不能省略
| void | 返回沒有值 |
| String | 返回值字符串 |
| * | 任意 |
包,[省略]
| com.gyf.crm | 固定包 |
| com.gyf.crm.*.service | crm包下面子包任意 (例如:com.gyf.crm.staff.service) |
| com.gyf.crm.. | crm包下面的所有子包(含自己) |
| com.gyf.crm.*.service.. | crm包下面任意子包,固定目錄service,service目錄任意包 |
類,[省略]
| UserServiceImpl | 指定類 |
| *Impl | 以Impl結(jié)尾 |
| User* | 以User開頭 |
| * | 任意 |
方法名,不能省略
| addUser | 固定方法 |
| add* | 以add開頭 |
| *Do | 以Do結(jié)尾 |
| * | 任意 |
(參數(shù))
| () | 無參 |
| (int) | 一個(gè)整型 |
| (int ,int) | 兩個(gè) |
| (..) | 參數(shù)任意 |
throws ,可省略,一般不寫。
案例1
execution(* com.gyf.crm.*.service..*.*(..))
案例2 或
<aop:pointcut expression="execution(* com.gyf.crm.service.*.*(..)) || execution(* com.gyf.*Do.*(..))" id="myPointCut"/>
within:
匹配包或子包中的方法(了解)
within(com.gyf.aop..*)
this:
匹配實(shí)現(xiàn)接口的代理對象中的方法(了解)
this(com.gyf.aop.user.UserDAO)
target:
匹配實(shí)現(xiàn)接口的目標(biāo)對象中的方法(了解)
target(com.gyf.aop.user.UserDAO)
args:
匹配參數(shù)格式符合標(biāo)準(zhǔn)的方法(了解)
args(int,int)
bean(id)
對指定的bean所有的方法(了解)
bean('userServiceId')3.通知類型

- before:前置通知(應(yīng)用:各種校驗(yàn)):在方法執(zhí)行前執(zhí)行,如果通知拋出異常,阻止方法運(yùn)行
- afterReturning:后置通知(應(yīng)用:常規(guī)數(shù)據(jù)處理):方法正常返回后執(zhí)行,如果方法中拋出異常,通知無法執(zhí)行,必須在方法執(zhí)行后才執(zhí)行,所以可以獲得方法的返回值。
- around:環(huán)繞通知(應(yīng)用:十分強(qiáng)大,可以做任何事情):方法執(zhí)行前后分別執(zhí)行,可以阻止方法的執(zhí)行,必須手動執(zhí)行目標(biāo)方法
- afterThrowing:拋出異常通知(應(yīng)用:包裝異常信息):方法拋出異常后執(zhí)行,如果方法沒有拋出異常,無法執(zhí)行
- after:最終通知(應(yīng)用:清理現(xiàn)場):方法執(zhí)行完畢后執(zhí)行,無論方法中是否出現(xiàn)異常
到此這篇關(guān)于SpringAop中AspectJ框架的切入點(diǎn)表達(dá)式的文章就介紹到這了,更多相關(guān)AspectJ框架的切入點(diǎn)表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析
- Spring AOP與AspectJ的對比及應(yīng)用詳解
- Spring基于常用AspectJ切點(diǎn)表達(dá)式使用介紹
- Spring學(xué)習(xí)通過AspectJ注解方式實(shí)現(xiàn)AOP操作
- Spring基于AspectJ的AOP開發(fā)案例解析
- Spring AspectJ 實(shí)現(xiàn)AOP的方法你了解嗎
- Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程
- Java aop面向切面編程(aspectJweaver)案例詳解
相關(guān)文章
JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析
這篇文章主要介紹了JavaWeb dbutils執(zhí)行sql命令并遍歷結(jié)果集時(shí)不能查到內(nèi)容的原因分析及簡單處理方法,文中給大家介紹了javaweb中dbutils的使用,需要的朋友可以參考下2017-12-12
Eclipse配置tomcat發(fā)布路徑的問題wtpwebapps解決辦法
這篇文章主要介紹了Eclipse配置tomcat發(fā)布路徑的問題wtpwebapps解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06
基于strict-origin-when-cross-origin問題的解決
這篇文章主要介紹了基于strict-origin-when-cross-origin問題的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Spring Boot整合Redis注解實(shí)現(xiàn)增刪改查功能(Redis注解使用)
文章介紹了如何使用SpringBoot整合Redis注解實(shí)現(xiàn)增刪改查功能,包括配置、實(shí)體類、Repository、Service及測試示例,通過使用注解如@RedisHash、@Cacheable等,可以簡化操作并提高性能,文章還提供了關(guān)鍵注解的說明和測試驗(yàn)證方法,感興趣的朋友跟隨小編一起看看吧2025-11-11
Spring MVC溫故而知新系列教程之請求映射RequestMapping注解
這篇文章主要介紹了Spring MVC溫故而知新系列教程之請求映射RequestMapping注解的相關(guān)知識,文中給大家介紹了RequestMapping注解提供的幾個(gè)屬性及注解說明,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05
解決IDEA中 Ctrl+ALT+V這個(gè)快捷鍵無法使用的情況
這篇文章主要介紹了解決IDEA中 Ctrl+ALT+V這個(gè)快捷鍵無法使用的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

