博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring AOP 原理
阅读量:1986 次
发布时间:2019-04-27

本文共 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注解方式

 

转载地址:http://wlyvf.baihongyu.com/

你可能感兴趣的文章
solr的使用详解
查看>>
Myslq连接(JDBC)url属性的参数的设置
查看>>
关于Java继承,重载及运行的顺序的总结
查看>>
关于Spring MVC与前端的交互
查看>>
Mybatis逆向工程的使用
查看>>
关于Hibernate的优缺点
查看>>
常用的 Maven 命令
查看>>
常用的20个正则表达式
查看>>
数据结构之顺序表的实现
查看>>
数据结构之线性链表
查看>>
JQuery使用validate插件完成校验
查看>>
关于java的继承
查看>>
关于java的内部类
查看>>
关于java的枚举
查看>>
一个简单的layui登陆界面
查看>>
SQL考试常见题目
查看>>
使用Spring Boot写一个简单的Hello World
查看>>
Spring Boot整合Servlet使用
查看>>
SpringBoot 文件上传
查看>>
我居然在Github上找到了一个完整的停车系统(附源码地址)
查看>>