使用Spring的注解方式实现AOP入门
首先添加包
/spring.jar
/lib/aspectj/aspectjrt.jar
/lib/aspectj/aspectjweaver.jar
/lib/j2ee/common-annotations.jar
/lib/jakarta-commons/common_logging.jar
/lib/cglib/cglib-nodep-2.1-3.jar
beans.xml
PersonService.java和PersonServiceBean.java和上篇一样
MyInterceptor.java
@Ascept声明了切面,即进行拦截的类。
@Pointcut声明了切入点,即进行拦截的方法。
@Pointcut("execution(* cn.itcast.service..*.*(..))")
* 代表返回值类型
cn.pf.service 需要拦截的包名
.. 代表队子包的类进行拦截
* 代表进行拦截的类
* 代表进行拦截的方法
(..) 代表方法的参数随意
(*代表任意)
下面来测试前置通知,后置通知,最终通知,例外通知以及环绕通知。
MyInterceptor.java
SpringAOPTest.java
控制台输出:
前置通知
进入环绕方法
cn.pf.aop.service.impl.PersonServiceBean save方法
后置通知
最终通知
退出环绕方法
那么如何获得输入参数,返回值,异常呢,那么稍作修改
其实切面就感觉像servlet里面的过滤器,在方法的前后加上一些关卡,进行筛选,判定权限,通过指定好的一些切面后,才可以真正调用目标对象的方法。