我正在Spring Boot中编写一个Web应用程序,我希望它支持'plug ins'(在我的例子中,这些是实现某个接口并提供其他功能的类,例如新的REST API endpoints ) .
我有这个工作正常,并在启动时我的应用程序扫描这些接口的类路径,并使它们可用于我的应用程序的相应部分(通过服务) . 但是,我想扩展这个,以便我可以:
-
检测在应用程序运行时放入某个文件夹的新插件,并将这些插件提供给应用程序
-
检测在应用程序运行时删除的插件,并使这些插件对应用程序不可用
-
检测插件的更改并重新加载
考虑到我已经排除了OSGi的使用,最好的方法是什么?从我已经完成的阅读开始,看起来我需要使用类加载器,这是我之前没有做过的事情 .
我应该用自己的Spring Boot替换Spring Boot使用的类加载器,还是有办法扩展它以便我可以在运行时加载和卸载其他JAR?我该怎么做(无论可能是什么)?