ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring AOP

2020-11-09 20:33:12  阅读:136  来源: 互联网

标签:Spring 代码 jar 复制 切面 AOP 拦截 方法


写AOP的步骤:

导包

spring AOP的核心包

spring-aop-4.3.18.RELEASE.jar
复制代码
AOP的扩展包(导入扩展包后,被切面类不用实现任何接口,也可以被切面)

com.springsource.org.aspectj.weaver-1.7.2.RELEASE.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.net.sf.cglib-2.2.0.jar
复制代码
所有jar包都可以在Maven Repository中找到

在spring-config的xml文件中配置:启用aop注解功能
aop:aspectj-autoproxy/
随便写一个接口:
写两个类:切面类和被切面类,被切面类要实现上面的接口,才能在动态代理中创建代理对象
两个类加入spring容器中
给切面类注解@Aspect,表示这是一个切面类
告诉切面类的哪个方法需要切入到被切面类的哪个方法中:

@Before: 在方法运行之前
@After: 方法运行结束
@AfterReturning: 方法正常返回
@AfterThrowing: 方法出现异常

注解参数传入一个切入表达式:"execution()"
切入点表达式:对指定的方法进行拦截,并且生成代理表达式。

拦截所有public方法

<aop:pointcut expression="execution(public * *(..))" id="pt"/>
复制代码
拦截所有save开头的方法

<aop:pointcut expression="execution(* save*(..))" id="pt"/>```
4. 拦截指定类的指定方法

<aop:pointcut expression="execution(public * 包名.类名.方法名(..))" id="pt"/>
复制代码
拦截指定类的所有方法

<aop:pointcut expression="execution(* 包名.类名.*(..))" id="pt"/>
复制代码
拦截指定包,以及其自包下所有类的所有方法

<aop:pointcut expression="execution(* cn..*.*(..))" id="pt"/>
复制代码
多个表达式

<aop:pointcut expression="execution(* 包名.类名.方法名()) || execution(* 包名.类名(不同的类).方法名())" id="pt"/>
<aop:pointcut expression="execution(* 包名.类名.方法名()) or execution(* 包名.类名(不同的类).方法名())" id="pt"/>
复制代码
取非值

<aop:pointcut expression="!execution(* 包名.类名.方法名())" id="pt"/>
<aop:pointcut expression=" not execution(* 包名.类名.方法名())" id="pt"/>

标签:Spring,代码,jar,复制,切面,AOP,拦截,方法
来源: https://www.cnblogs.com/instular/p/13950612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有