use*_*555 32 spring hibernate maven spring-boot
我们在多模块项目中使用spring boot.
我们有一个域访问模块,它具有公共域对象类,存储库以及数据源,JPA,Hibernate等的配置.这些是使用application.properties配置的.我们将所有这些配置放入通用模块中,以便在更高级别的模块中保存重复这些常见配置.
这在构建域模块时工作正常,因此配置在测试单元中正确加载.
然而,当我们尝试在更高层模块中使用域模块时,问题就开始了; 他们有自己的application.properties,这意味着Spring加载它们而不是Domain模块application.properties,这意味着没有配置数据源,因为只加载了更高模块的application.properties.
我们想要的是Spring模块和更高级别的应用程序属性.但我们看不到任何简单的方法来做到这一点.
我认为这一定是一个常见的问题,并想知道是否有针对此问题的推荐解决方案?
由于我们使用spring-boot,理想情况下解决方案应该使用注释而不是applictionContext.xml.
也许您应该只application.properties在顶级聚合器项目中使用?
您始终可以@PropertySource在子项目中使用其特定于其用例的名称来对其进行配置。
或者,您可以为每个项目使用不同的名称,并使用spring.config.location(逗号分隔)将它们粘合到顶级项目中。
我同意@Dave Syer。将应用程序分成多个模块的想法是,每个模块都是一个独立的单元,在本例中为jar文件。从理论上讲,您可以将每个jar文件拆分为它们自己的源存储库,然后在多个项目中使用它们。假设您要在Web和批处理应用程序中重用这些域类,如果所有的APPLICATION级别配置都存储在每个单独的模块中,则会严重降低它们的可重用性。
IMO仅聚合模块应包含作为应用程序运行所需的所有配置,其他所有内容仅是一个依赖项,可以根据需要进行重新混合和重用。
小智 6
也许另一种方法是为每个模块定义特定的配置文件,并使用 application.properties 文件仅使用spring.profiles.include 属性指定哪些配置文件处于活动状态。
domain-module
- application.properties
- application-domain.properties
app-module
- application.properties
- application-app.properties
Run Code Online (Sandbox Code Playgroud)
并进入 app-module 的 application.properties 文件
spring.profiles.include=domain,app
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11379 次 |
| 最近记录: |