组件化Spring Boot应用程序的一部分,通过放入罐子来提供新功能?

问题描述 投票:0回答:1

我有一个Spring Boot应用程序,我想转售给客户。我希望它可以作为多个功能的入口/框架,可以随着时间的推移单独销售/添加。

理想地,可以向用户提供基础弹簧引导app / jar。在启动时,应用程序将扫描当前工作目录中的任何jar文件。如果它找到了一个jar文件,它会自动将基本应用程序中的功能提供给用户。

可能有更好的方法来实现这一点,但已经开发了基本的Spring启动应用程序,这似乎是一种合乎逻辑的方法。 OSGI是否适合这种情况?

或者是他们为Spring Boot应用程序提供组件化/捆绑功能的其他方法?

spring-boot osgi
1个回答
0
投票

理论上,OSGi更适合这种情况,因为它允许您在运行时安装新组件,而不需要重新启动。 OSGi还通过设计提供了更好的机制来封装独立组件中的功能。

但是,我说我不确定这是否是正确的做法。如果客户不再支付您的组件,会发生什么?如果客户为组件付款并且您想要销售更新并且他们不想付款并且现在您必须支持更多版本等,会发生什么?

有很多方法可以考虑会使整个事情复杂化的场景。

据我所知,大多数产品都提供所有产品,然后您支付许可费。根据您购买的许可证,不同的功能将被“解锁”。

大多数情况下,这些许可证只是某种“加密”密钥,只有发行人才能检查。考虑公钥/私钥机制。我打赌还有更多的选择。

最近,Gitlab工程团队就这类话题发表了一篇有趣的博客文章:GitLab might move to a single Rails codebase

如果您真的想要使用它,您可能还想看看Java 9中引入的新Java module system。虽然看起来这还不是100% supported by Spring Boot

就个人而言,在过去的9年中,我曾与OSGi合作,我可能会建议使用Spring Boot。这是基于主观感觉,Spring Boot更现代,拥有更大的社区。虽然OSGi的整体想法仍然很好,但目前还没有OSGi框架(如Spring Boot)让我兴奋不已。但正如我所说,这是我的意见,这不一定是“正确的”。

© www.soinside.com 2019 - 2024. All rights reserved.