Spring、AOP详解

如何配置AOP查看:Spring、Hello AOP

1.对于拦截规则@Pointcut的介绍:

	@Pointcut("execution (* cn.raffaello.service..*.*(..))")
	private void anyMethod(){} // 声名一个切入点,声名方式比较奇特

注解:

// *      返回值类型  *为所有类型的返回值
// cn.raffaello.service  所拦截的包
// ..      如果使用..则表示要对拦截的包及下的所有子包进行拦截
// *.*   类.方法名    所拦截的包下的类.方法
// (..)   所拦截方法的参数 ..为不限定参数及类型  例(String,Integer,String)


2.前置通知、后置通知、最终通知、环绕通知、例外通知在Spring处理中存在的位置:


	@Before("anyMethod()") 
	public void doAccessCheck(){
		System.out.println("前置通知");
	}
	@AfterReturning("anyMethod()")
	public void doAfterReturning(){
		System.out.println("后置通知");
	}
	@After("anyMethod()")
	public void doAfter(){
		System.out.println("最终通知");
	}
	@Around("anyMethod()")
	public void doAround(ProceedingJoinPoint pjp) throws Throwable{
		System.out.println("环绕通知前");
		pjp.proceed(); // proceed()  执行业务方法,可以在此前后添加拦截判断,权限状态等
		System.out.println("环绕通知后");
	}
	@AfterThrowing("anyMethod()")
	public void doAfterThrowing(){
		System.out.println("例外通知"); // 异常通知
	}
	


3.拦截特定参数、返回值、异常的方法

	// 拦截只有一个参数,并且参数类型为String
	@Before("anyMethod() && args(name)") 
	public void doAccessCheck(String name){
		System.out.println("前置通知  Name:"+name);
	}

	// 拦截返回值类型是String的方法
	@AfterReturning(pointcut="anyMethod()",returning="returnValue")
	public void doAfterReturning(String returnValue){
		System.out.println("后置通知   return:"+returnValue);
	}

	// 拦截异常类型为Exception的异常
	@AfterThrowing(pointcut="anyMethod()",throwing="ex")
	public void doAfterThrowing(Exception ex){
		System.out.println("例外通知 例外:"+ex); // 异常通知
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值