• 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); // 异常通知
    	}


  • 相关阅读:
    安卓权威编程指南-笔记(第24章 Looper Handler 和 HandlerThread)
    AndroidImageSlider
    ToolBar的使用
    安卓权威编程指南-笔记(第26章 服务的作用)
    关于两个update语句互相死锁的显现,加深我们对锁的了解 转载
    js 原型和构造方法 转载
    关于distinct 和group by的去重逻辑浅析
    tab 下一个
    当前浏览器版本
    清除li间隔
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5114736.html
Copyright © 2020-2023  润新知