Aop底层原理分析
2023-02-18 16:45:18 时间
1.首先启动SpringAop时,会使用该@EnableAspectJAutoProxy注解
2.将@Import(AspectJAutoProxyRegistrar.class)注入SpringIOC容器中
3.AspectJAutoProxyRegistrar中会注册对象
BeanId:org.springframework.aop.config.internalAutoProxyCreator
BeanClass :AnnotationAwareAspectJAutoProxyCreator
4.AnnotationAwareAspectJAutoProxyCreator最为核心:使用后置通知在bean的对象初始化的时候,实现对代理对象的增强。
AnnotationAwareAspectJAutoProxyCreator祖宗:
AbstractAutoProxyCreator 祖宗有是BeanPostProcessor
5.被代理对象在初始化的时候,AbstractAutoProxyCreator 经过这样的一个类拦截。
判断该被代理对象是否有被有实现过接口,如果有实现过接口就使用jdk动态代理,如果没有实现接口则使用cglib动态代理。
涉及解析切入点表达式的源码分析参考文章:
https://blog.csdn.net/yytree123/article/details/109317709
相关文章
- [HTTP]解决406 not acceptable 错误
- [PHP] 接口增加recaptcha行为验证
- [PHP] Workerman中的注册树模式
- [日常] 解决mysql localhost可以连接但是127.0.0.1不能连接
- [日常] ubuntu下安装php pdo扩展和导入数据库
- [Nginx] nginx配置域名反代后端端口
- [PHP] 使用适配器模式处理数据库对象
- [PHP]使用策略模式消除if else
- [日常] win10开启和安装ubuntu子系统
- [PHP] 解释FastCGI与PHP-FPM的关系
- [PHP] stream_set_blocking非阻塞模式影响fgets fread函数
- [日常] 解决PHP Warning: Module 'mysqli' already loaded in Unknown on line 0
- [PHP]PHP请求在PHP-FPM下的生命周期
- [PHP]解决500错误问题-nginx以及fpm没有任何错误日志
- [日常] windows下使用vscode配合xebug调试php脚本
- [PHP] cli环境下php设置进程名字
- [PHP]解决 Call-time pass-by-reference has been removed
- [PHP]解决PHP Call to undefined function ldap_connect()
- [Nginx] Nginx配置PHP应用传递PATH_INFO变量
- [PHP]解决PHP Fatal error: Call to undefined function mcrypt_get_iv_size()