Spring AOP 原理
发布日期:2021-06-30 20:00:15 浏览次数:4 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:springboot-admin+spring-boot-actuator 实现运行状态监控
下一篇:spring 启动之全过程 源码解析

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月20日 10时23分17秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章