大家都知道可以用aop来实现日志管理,但是如何动态的来实现日志管理呢?
前置知识
- Advice:
org.aopalliance.aop.Advice
“通知”,表示 Aspect 在特定的 Join point 采取的操作。包括 “around”, “before” and “after 等 Advice,大体上分为了三类:BeforeAdvice、MethodInterceptor、AfterAdvice
- Advisor:
org.springframework.aop.Advisor
“通知者”,它持有 Advice,是 Spring AOP 的一个基础接口。它的子接口 PointcutAdvisor 是一个功能完善接口,它涵盖了绝大部分的 Advisor。
- Advised:
org.springframework.aop.framework.Advised
AOP 代理工厂配置类接口。提供了操作和管理 Advice 和 Advisor 的能力。它的实现类 ProxyFactory 是 Spring AOP 主要用于创建 AOP 代理类的核心类。
热插拔AOP执行核心逻辑
图片
核心实现代码
1、动态管理advice端点实现
2、利用事件监听机制捕获安装或者卸载插件
3、安装插件
4、安装插件核心实现
5、卸载插件
6、卸载插件核心实现
7、操作advice实现
热插拔AOP演示示例
1、创建一个service
2、创建一个controller
3、准备一个日志切面jar
图片
切面内容为
4、测试
场景一:未添加切面时 浏览器访问:http://localhost:8080/hello/zhangsan 观察控制台
图片
场景二:通过postman动态操作代理
1、新增代理
图片
观察控制台
此时浏览器访问:http://localhost:8080/hello/zhangsan
再次观察控制台
图片
出现了切面日志信息,说明代理生效
2、删除代理
图片
观察控制台
此时浏览器访问:http://localhost:8080/hello/zhangsan
再次观察控制台
图片
此时没有出现切面日志信息,说明代理删除成功
总结
本文实现热插拔AOP就在于对advice、advised、advisor、pointcut概念的理解,这是实现热插拔AOP的前提。
最后说一句(求关注!别白嫖!)
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。
关注公众号:woniuxgg,在公众号中回复:笔记 就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!