本文共 737 字,大约阅读时间需要 2 分钟。
总结
基于AspectJ注解的 @Before,@After....,基于原生的,基于org.aopalliance.intercept.MethodInterceptor的,三种方式
最终的实现原理都一样,都是通过创建bean的时候调用各自的BeanPostProcessor的后置处理器处理返回代理对象。只是继承org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator(实现了BeanPostProcessor接口)改写了其中一些方法,导致后置处理的时候调用自己重写的方法。
AnnotationAwareAspectJAutoProxyCreator 继承Spring的Aop代理创建类, AbstractAutoProxyCreator。他们都实现了BeanPostProcessor接口,所以在穿创建ean的后置处理器中会回调创建代理。
三种对比
·AspectJ注解比较方便,直接类上@Aspect,方法中@Before
MethodInterceptor的方式会比较灵活一点。可以使用自己定义的注解做各种AOP操作。
原生的需要在配置文件中写 切入点,切面类(里面包含after,before等增强的方法),after,before时在切面类中的方法。
自定义AOP
要实现自己写类似Spring的AOP有两种方式
(1)实现 MethodInterceptor接口。
(2)自己写一个实现BeanPostProcessor接口的类,在创建bean时的后置处理方法中做操作。
类继承及代码逻辑
三种方式实现
MethodInterceptor方式
原生方式
AspectJ注解方式
转载地址:https://liuhuiyao.blog.csdn.net/article/details/106987636 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!