spring 插件定义热插拔及原理

旧街凉风 提交于 2020-02-15 09:44:40

前言

简单实现一个spring 插件,可通过页面配置,动态的修改是否生效或失效
一个简单的日志插件:在方法前面打印日志插件,通知页面来设置这个插件是否开启
初始设想:如果了解spring aop,那么很容易是就想到可以用动态代理来实现,那么如果在ioc初始完成后,再去修改代理对象的拦截链呢?
1、需要在Ioc启动完成后,用类加载器将所对插件加载进来,然后实例化成advice对象,添加到代理对象的拦截链中
2、梳理一下需要搞清的问题如下:

  • 类加载器是什么?
    需要将插件类加载到工程中才能使用这个插件中的类
  • 插件jar包 包含哪些内容?
    实际上就是实现一个功能的类
  • 如何创建拦截链对象?
    通过反射创建拦截链对象(Advice对象)

一、插件定义

实际上就是在一个插件工程中单独定义一个类,这个类实现MethodBeforeAdvice 接口,定义增强方法

public class CountTimesPlugin  implements MethodBeforeAdvice {
	private int count;
	protected
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!