Spring之AOP:我行之我见(基于Annotation和XML)

来源:互联网 发布:acl应用到端口 编辑:程序博客网 时间:2024/04/29 21:45
如果你看了上一篇文章,你会发现Spring本身做的多好,不用我们在写神马代理类,一切都给我们定义好了
//@Aspectpublic class AopInterceptor{//@Pointcut("execution(public * com.jzh.daoimp.*.*(..))")public void anyMethod(){System.out.println("声明一个切入点");}//@Before("anyMethod()&&args(username)")    public void doAccessCheck()    {System.out.println("定义前置通知...");    }//@AfterReturning(pointcut="anyMethod()",returning="relvalue")public void doAfterReturning(){ System.out.println("定义后置通知...");} //@After("anyMethod()")public void doAfter(){ System.out.println("定义最终通知...");} //@AfterThrowing(pointcut="anyMethod()",throwing="e")//定义异常通知(当所拦截的方法出现异常时) public void doAfterThrowing(){ System.out.println("定义异常通知...");} //@Around("anyMethod()")//定义环绕通知 public Object doBasicProfiing(ProceedingJoinPoint pjp) throws Throwable{ //if(){//判断用户是否有权限 System.out.print("进入方法"); Object result = pjp.proceed(); //此方法是必须 System.out.println("退出方法"); //} return result;} /*//@Pointcut("execution(public * com.jzh.daoimp.*.*(..))")public void anyMethod(){System.out.println("声明一个切入点");}//@Before("anyMethod()&&args(username)")    public void doAccessCheck(String username)    {System.out.println("定义前置通知...并传参数"+username);    }//@AfterReturning(pointcut="anyMethod()",returning="relvalue")public void doAfterReturning(String relvalue){ System.out.println("定义后置通知...执行返回String类型的方法"+relvalue);} //@After("anyMethod()")public void doAfter(){ System.out.println("定义最终通知");} //@AfterThrowing(pointcut="anyMethod()",throwing="e")//定义异常通知(当所拦截的方法出现异常时) public void doAfterThrowing(Exception e){ } //@Around("anyMethod()")//定义环绕通知 public Object doBasicProfiing(ProceedingJoinPoint pjp) throws Throwable{ //if(){//判断用户是否有权限 System.out.print("进入方法"); Object result = pjp.proceed(); //此方法是必须 System.out.println("退出方法"); //} return result;} */}
如果你想用注解只需要把<!-- <aop:aspectj-autoproxy/>-->打开,其他aop标签注释掉。
    <context:annotation-config/>    <context:component-scan base-package="com.jzh"/>  <!--    <aop:aspectj-autoproxy/>--> <bean id="aop" class="com.jzh.aop.AopInterceptor"></bean> <bean id="userDao" class="com.jzh.daoimp.UserDaoImp"></bean> <aop:config> <aop:aspect id="aopInterceptor" ref="aop"> <aop:pointcut expression="execution(public * com.jzh.daoimp.*.*(..))"  id="mycut"/> <aop:before method="doAccessCheck" pointcut-ref="mycut"  /> <aop:after-returning method="doAfterReturning" pointcut-ref="mycut"/> <aop:after method="doAfter" pointcut-ref="mycut"/> <aop:after-throwing method="doAfterThrowing" pointcut-ref="mycut"/> <aop:around method="doBasicProfiing" pointcut-ref="mycut"/> </aop:aspect> </aop:config></beans>


原创粉丝点击