我正在Spring Boot中编写一个Web应用程序,我希望它支持'plug ins'(在我的例子中,这些是实现某个接口并提供其他功能的类,例如新的REST API endpoints ) .

我有这个工作正常,并在启动时我的应用程序扫描这些接口的类路径,并使它们可用于我的应用程序的相应部分(通过服务) . 但是,我想扩展这个,以便我可以:

  • 检测在应用程序运行时放入某个文件夹的新插件,并将这些插件提供给应用程序

  • 检测在应用程序运行时删除的插件,并使这些插件对应用程序不可用

  • 检测插件的更改并重新加载

考虑到我已经排除了OSGi的使用,最好的方法是什么?从我已经完成的阅读开始,看起来我需要使用类加载器,这是我之前没有做过的事情 .

我应该用自己的Spring Boot替换Spring Boot使用的类加载器,还是有办法扩展它以便我可以在运行时加载和卸载其他JAR?我该怎么做(无论可能是什么)?