aop是怎么实现的
aop实现步骤为:1.spring 容器启动;2.实现逻辑的方法;3.调用方法,创建代理。aop实现方式有很多种,包括反射、元数据处理、程序处理、拦截器处理等。
1.spring 容器启动
每个bean的实例化之前都会先经过AbstractAutoProxyCreator类的postProcessAfterInitialization()这个方法,然后接下来是调用wrapIfNecessary方法。
2.实现逻辑的方法
进入wrapIfNecessary方法后,我们直接看重点实现逻辑的方法getAdvicesAndAdvisorsForBean,这个方法会提取当前bean 的所有增强方法,然后获取到适合的当前bean 的增强方法,然后对增强方法进行排序,最后返回。
3.调用方法,创建代理
获取到当前bean的增强方法后,便调用createProxy方法,创建代理。先创建代理工厂proxyFactory,然后获取当前bean 的增强器advisors,把当前获取到的增强器添加到代理工厂proxyFactory,然后设置当前的代理工的代理目标对象为当前bean,最后根据配置创建JDK的动态代理工厂,或者CGLIB的动态代理工厂,然后返回proxyFactory。
最后,推荐我们的管理工具给大家