我有一个spring-boot应用程序,可以作为其他应用程序的小框架。它提供了几个JMS队列和一个DAO层,用于检索和存储来自一组公共数据存储的数据。问题是这个框架应用程序的原始开发人员正在扫描所有包“com.mycompany”(而不是com.mycompany.framework),以便它可以加载可能在com.mycompany下声明的特定应用程序的bean。 myapp1或com.mycompany.myapp2是哪个JAR与框架的JAR捆绑在一起。
我们只在JVM(app1或app2)中加载一个应用程序,但这些应用程序可能共享其他库,有时我们最终会在我们不需要的上下文中使用bean。 (这些可能在app1中需要,但在app2中不需要) 那么,你的建议是什么?
我的问题与此处描述的类似: https://github.com/spring-projects/spring-boot/issues/3300
我正在辩论,如果每个应用程序都应该知道框架并加载它。或者,如果框架应该实例化一个类加载器并创建一个新的Spring上下文,则按照上面链接中的建议加载特定于应用程序的代码。
答案 0 :(得分:0)
也许您应该考虑在框架中利用Spring Boot的一些自动配置功能,例如@ConditionalOnProperty
或@ConditionalOnClass
。这样,只有在使用框架的应用程序采取某些特定操作时(例如,在类路径上具有给定的jar或设置配置值),您才能实际启用某些Bean。如需参考,请查看:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-developing-auto-configuration