将 Spring 启动应用程序的部分组件化以通过放入 jar 来提供新功能?
Componentizing parts of a Spring Boot app to provide new functionality by dropping in jars?
我有一个 Spring 启动应用程序,我想转售给客户。我希望它作为多个功能的 entry-point/framework,随着时间的推移可以单独 sold/added。
理想情况下,可以向用户提供基础 spring 引导 app/jar。在启动时,该应用程序将扫描当前工作目录以查找任何 jar 文件。如果找到 jar 文件,它会自动向用户提供基础应用程序中的功能。
可能有更好的方法来执行此操作,但已经开发了基础 spring 启动应用程序,这似乎是一种合乎逻辑的方法。 OSGI 会是这种情况的正确答案吗?
或者他们是否通过其他方式为 Spring 启动应用程序提供 componentized/bundled 功能?
理论上 OSGi 更适合这种事情,因为它允许您在运行时安装新组件,而不需要重新启动。 OSGi 还通过设计提供了更好的机制来将功能封装在独立的组件中。
但是我不确定这是否是一般的正确方法。如果客户不再为您的组件付费,会发生什么情况?如果客户支付了组件费用,而你想出售更新,而他们不想付款,而现在你必须支持更多版本等,会发生什么情况。
有很多方法可以想到会使整个事情复杂化的场景。
据我所知,大多数产品都会发货,然后您需要支付许可费。然后根据您购买的许可证“解锁”不同的功能。
大多数时候,这些许可证只是某种只有颁发者才能检查的“加密”密钥。想想 public/private 关键机制。我打赌还有更多选择。
Gitlab 工程团队最近就此类主题发表了一篇有趣的博客 post:GitLab might move to a single Rails codebase
如果您真的想使用它,您可能还想看看新的 Java module system, that was introduced in Java 9. Although it appears that this is not yet 100% supported by Spring Boot。
个人,过去 9 年一直使用 OSGi,我可能会建议使用 Spring Boot.这是基于主观感觉 Spring Boot 更现代一点并且拥有更大的社区。目前没有 OSGi 框架(比如 Spring Boot)能让我兴奋地去做一个项目,尽管 OSGi 的整体理念仍然很棒。但正如我所说,这是我的意见,不一定“正确”。
我有一个 Spring 启动应用程序,我想转售给客户。我希望它作为多个功能的 entry-point/framework,随着时间的推移可以单独 sold/added。
理想情况下,可以向用户提供基础 spring 引导 app/jar。在启动时,该应用程序将扫描当前工作目录以查找任何 jar 文件。如果找到 jar 文件,它会自动向用户提供基础应用程序中的功能。
可能有更好的方法来执行此操作,但已经开发了基础 spring 启动应用程序,这似乎是一种合乎逻辑的方法。 OSGI 会是这种情况的正确答案吗?
或者他们是否通过其他方式为 Spring 启动应用程序提供 componentized/bundled 功能?
理论上 OSGi 更适合这种事情,因为它允许您在运行时安装新组件,而不需要重新启动。 OSGi 还通过设计提供了更好的机制来将功能封装在独立的组件中。
但是我不确定这是否是一般的正确方法。如果客户不再为您的组件付费,会发生什么情况?如果客户支付了组件费用,而你想出售更新,而他们不想付款,而现在你必须支持更多版本等,会发生什么情况。
有很多方法可以想到会使整个事情复杂化的场景。
据我所知,大多数产品都会发货,然后您需要支付许可费。然后根据您购买的许可证“解锁”不同的功能。
大多数时候,这些许可证只是某种只有颁发者才能检查的“加密”密钥。想想 public/private 关键机制。我打赌还有更多选择。
Gitlab 工程团队最近就此类主题发表了一篇有趣的博客 post:GitLab might move to a single Rails codebase
如果您真的想使用它,您可能还想看看新的 Java module system, that was introduced in Java 9. Although it appears that this is not yet 100% supported by Spring Boot。
个人,过去 9 年一直使用 OSGi,我可能会建议使用 Spring Boot.这是基于主观感觉 Spring Boot 更现代一点并且拥有更大的社区。目前没有 OSGi 框架(比如 Spring Boot)能让我兴奋地去做一个项目,尽管 OSGi 的整体理念仍然很棒。但正如我所说,这是我的意见,不一定“正确”。