Spring AOP

xiaoxiao2021-02-28  18

转载原文地址:http://www.cnblogs.com/dreamfree/p/4095858.html

Spring AOP   AspectJ:Java社区里最完整最流行的AOP框架   在Spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP

在Spring中启用AspectJ注解支持   要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar、aspectj.weaver.jar和spring-aspects.jar   将aop Schema添加到<beans>根元素中。   要在Spring IOC容器中启用AspectJ注解支持,只要早bean配置文件中定义一个空的XML元素<aop:aspectj-autoproxy>   当Spring IOC容器侦测到bean配置文件中的<aop:aspectj-autoproxy>元素时,会自动为与AspectJ切面匹配的bean创建代理 用AspectJ注解声明切面   要在Spring中声明AspectJ切面,只需要在IOC容器中将切面声明为bean实例。当在Spring IOC容器中初始化AspectJ切面之后,Spring IOC容器就会为那些与AspectJ切面相匹配的bean创建代理   在AspectJ注解中,切面只是一个带有@AspectJ注解的Java类   通知是标注有某种注解的简单的Java方法   AspectJ支持5种类型的通知注解:     @Before:前置通知,在方法执行之前返回     @After:后置通知,在方法执行后执行     @AfterRunning:返回通知,在方法返回结果之后执行     @AfterThrowing:异常通知,在方法抛出异常之后     @Around:环绕通知,围绕着方法执行 利用方法签名编写AspectJ切入点表达式   最典型的切入点表达式时根据方法的签名来匹配各种方法:     -execution * com.yl.spring.aop.ArithmeticCalculator.*(..):匹配ArithmeticCalculator中声明的所有方法,第一个*代表任意修饰符及任意返回值,第二个*代表任意方法,..匹配任意数量的参数。若目标类与接口与切面在同一个包中,可以省略包名。     -execution public * ArithmeticCalculator.*(..):匹配ArithmeticCalculator接口的所有公有方法     -execution public double ArithmeticCalculator.*(..):匹配ArithmeticCalculator中返回double类型数值的方法     -execution public double ArithmeticCalculator.*(double, ..):匹配第一个参数为double类型的方法,..匹配任意数量任意类型的参数     -execution public double ArithmeticCalculator.*(double, double):匹配参数类型为double,double类型的方法 后置通知   后置通知是在连接点完成之后执行的,即连接点返回结果或者抛出异常的时候,下面的后置通知记录了方法的终止。   一个切面可以包括一个或者多个通知

转载请注明原文地址: https://www.6miu.com/read-850324.html

最新回复(0)