基于XML配置以及基于注解开发AspectJ实现AOP

回顾:AOP通知类型以及基于代理类的AOP实现

AspectJ是基于java语言实现的AOP框架。使用AspectJ实现Spring AOP有两种方式:基于XML配置开发AspectJ基于注解开发AspectJ

基于XML配置开发AspectJ

基于XML配置是指 通过XML配置文件定义切面、切入点及通知,所有的定义必须在< aop:config>元素内完成。

元素名称 用途
< aop:config> 开发AspectJ的顶层配置元素,在配置文件的< beans>可以包含多个该元素
< aop:aspect> 配置一个切面,是< aop:config>的子元素,属性ref指定定义切面的bean
< aop:pointcut> 配置切入点,< aop:aspect>的子元素,属性expression指定通知增强的哪些方法
< aop:before> 配置前置通知,< aop:aspect>的子元素 ,实现method指定前置通知方法,属性pointcut-ref指定关联的切入点
< aop:after-returning> 配置后置返回通知,< aop:aspect>的子元素 ,实现method指定后置返回通知方法,属性pointcut-ref指定关联的切入点,目标方法成功执行后执行
< aop:around> 配置环绕通知,< aop:aspect>的子元素 ,实现method指定环绕通知方法,属性pointcut-ref指定关联的切入点
< aop:after-throwing> 配置异常通知,< aop:aspect>的子元素 ,实现method指定异常通知方法,属性pointcut-ref指定关联的切入点 ,没有异常时不会执行
< aop:after> 配置最终通知,< aop:aspect>的子元素 ,实现method指定最终通知方法,属性pointcut-ref指定关联的切入点,不管是否发生异常都要执行

在使用AspectJ实现Spring AOP时,需要用到的jar包有:

  1. spring-aop.jar
  2. spring-aspects.jar
  3. aspectjweaver.jar

编写切面类 :

package gzc.aspectj.xml;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
/**
 * 切面类 ,在此类中编写各种类型通知
 */
public class MyAspectJ {
   
	// 前置通知,使用JoinPoint接口作为参数获得目标对象
	public void before(JoinPoint jp) {
   
		System.out.print("前置通知:模拟权限控制");
		System.out.println(",目标对象:" + jp.getTarget() + ",被增强的方法:" + jp.getSignature().getName());
	}
	// 后置返回通知 , 目标方法成功执行后才执行
	public void afterReturning(JoinPoint jp) {
   
		System.out.print("后置返回通知:模拟缓存清理");
		System.out.println(",目标对象:" + jp.getTarget() + ",被增强的方法:" + jp.getSignature().getName());
	}
	/*
	 * 环绕通知 ProceedingJoinPoint 是JoinPoint的子接口,代表可以执行的目标方法 返回值类型必须是Object
	 * 必须一个参数是ProceedingJoinPoint类型 必须throws Throwable
	 */
	public Object around(ProceedingJoinPoint pjp) throws Throwable {
   
		Object obj = null
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值