基于AspectJ注解配置AOP
1、加入jar包:
要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar、aspectj.weaver.jar、spring-aspects.jar和spring-aop.jar。
2、在配置文件中加入aop的命名空间:
1)将aop Schema添加到<beans>根元素中
2)要在springIOC容器中启用AspectJ注解支持,只要在Bean配置文件中定义一个空的XML元素<aop:aspectj-autoproxy>
3)当SpringIOC容器侦测到Bean配置文件中的<aop:aspectj-autoproxy>元素时,会自动为与AspectJ切面匹配的Bean创建代理
3、基于注解方式:
1)在配置文件中加入如下配置:<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
2)把横切面关注点的代码抽象到切面的类中
a. 切面首先是一个IOC容器的bean,即加入@Component注解
b. 切面还需要加入@Aspect注解
3)在类中声明各种通知(其中:AspectJ支持5钟注解通知:@Before-前置通知,在方法执行之前执行;@After-后置通知,在方法执行之后执行;@AfterRuning-返回通知,在方法返回结果之后执行;@AfterThrowing-异常通知,在方法抛出异常之后;@Around-环绕通知,围绕着方法执行)
a. 声明一个方法
b. 在方法前加入@Before注解
4)可以在通知方法中声明一个类型为JoinPoint的参数,然后就能访问链接细节,如方法名称和参数
5) 使用@Order注解指定切面的优先级,值越小优先级越高,例:@Order(1)
6) 使用@Pointcut来声明切入点表达式
前置通知:
后置通知:
返回通知:
异常通知:
环绕通知:(不常用)