【问题标题】:Spring Boot: Refresh Application Context on Classpath ChangesSpring Boot:在类路径更改时刷新应用程序上下文
【发布时间】:2019-01-08 17:43:57
【问题描述】:

我使用 Spring Boot 的 PropertiesLauncherLoader-Path: plugins Manifest Entry 构建了一个小型应用程序。 plugins 文件夹内有几个 jar 文件,其中包含 META-INF/spring.factories

加载我的外部插件 jar 的配置按预期工作。

现在我想知道如果类路径上的某些内容发生更改,是否以及如何刷新应用程序上下文。例如删除或添加外部插件 jar。

我已经查看了SpringApplicationRunListener,但我想我无法通过这个课程实现它。

任何想法是否以及如何可能?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    在类路径上使用普通的 Spring 更改 jar 通常意味着完全重新启动应用程序。没有开箱即用的机制来支持 Spring Framework 提供的类路径中的运行时更改。

    在 2009/2010 年有 Spring Dynamics Modules 项目但 it seems abandoned now

    您很可能必须自己从头开始实施。也许您应该研究现有的插件系统实现,例如Apache Felix 实现了OSGi

    Apache Felix 是一个社区努力,旨在在 Apache 许可下实现 OSGi 框架和服务平台以及其他有趣的 OSGi 相关技术。 OSGi 规范最初针对嵌入式设备和家庭服务网关,但它们非常适合任何对模块化、面向组件和/或面向服务的原则感兴趣的项目。 OSGi 技术结合了上述原则的各个方面,定义了一个适合远程管理的动态服务部署框架。

    【讨论】:

    • Devtools 有一种机制来支持类路径中的运行时更改。所以我认为在 devtools 之外有一些东西可以在生产系统中使用它。我猜它使用的是WatchService
    猜你喜欢
    • 2018-08-17
    • 2022-10-19
    • 2018-05-06
    • 2013-12-22
    • 2020-05-07
    • 2017-01-16
    • 2011-04-23
    • 2021-06-30
    相关资源
    最近更新 更多