Spring AOP自定义切面
来源:互联网 发布:以撒的结合yum heart 编辑:程序博客网 时间:2024/06/10 09:23
Spring AOP切面
当我们使用AOP时,大部分时候我们使用的是其声明式事务管理的功能,可以很便捷的为我们提供事物的控制,但很多时候,除事物控制外,我们还希望做更多的操作,例如权限控制、日志记录、失败后数据记录等等,这时我们可以自定义切面,并自己实现一个切面的实现类,去实现我们自己的业务规则。
本文中Spring版本为2.5。
Demo
applicationContext.xml:
<bean id="ActionInitInterceptor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="patterns"> <list> <value>.*Action\..*</value> </list> </property> <property name="advice"> <bean class="com.action.advice.ActionInitInterceptor" /> </property></bean>
首先,我们定义了一个切面,同时指定了切面的处理类,需要注意的是,切面的property必须命名为patterns,切面的处理类的property必须命名为advice。
ActionInitInterceptor.java:
public class ActionInitInterceptor implements MethodBeforeAdvice { public void before(Method method, Object[] aobj, Object obj) throws Throwable { log.info("业务信息:现在开始初始化业务信息"); //dosometing..... }}
在切面类中,我们需要实现Spring的 MethodBeforeAdvice 的接口,同时重写其before()方法,这意味这在我们在切面的方法之前就可以做一些我们自己的业务控制。
除此之外,我们还可以在切面的不同状态进行控制。
public class ActionTransactionInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation methodInvocation) throws Throwable { Object tx = null; log.info("业务信息:启动事务"); //dosometing..... return tx; }}
实现Spring 的 MethodInterceptor ,实现其 invoke 方法可以在切面切入的类执行时进行监控。
public class TracingAfterAdvice implements AfterReturningAdvice{ public void afterReturning(Object object, Method m, Object[] args, Object target) throws Throwable { //dosometing..... } }
实现Spring 的 AfterReturningAdvice,实现其 afterReturning方法可以在切面切入的类执行完成后写入业务逻辑。
使用AOP,我们可以的便捷的对项目进行监控,在不影响原有业务逻辑的情况下进行特定业务逻辑的操作。
0 0
- Spring AOP自定义切面
- Spring基础 导入AOP+自定义标签切面
- Spring自定义面向切面编程(AOP)
- aop自定义切面
- 【Spring】AOP - 面向切面
- spring aop 定义切面
- Spring AOP切面
- 【Spring】AOP - 面向切面
- Spring AOP切面编程
- spring Aop切面
- spring-Aop切面编程
- Spring的切面 AOP
- spring AOP切面使用
- Spring AOP面向切面
- 切面优先级 Spring Aop
- spring aop 切面测试
- Spring AOP 切面编程
- spring AOP 面向切面
- SpringMVC环境下导出文件
- 使用mysqldump做定期数据库自动备份
- 第十周【项目一-二叉树算法库】
- 使用Genymotion 模拟器来打开百度地图项目报错:
- tjut 5949
- Spring AOP自定义切面
- Android Studio Gradle Could not reserve enough space for object heap
- Spring对异常的统一处理
- html5移动端需要用的js代码
- 第十周 项目3-利用遍历思想解决问题
- 分布式Unique ID的生成原理
- QDEZ AC题目
- 在MyEclipse和Eclipse中无法废弃svn地址
- 使用burpsuite抓火狐浏览器HTTPS包