【发布时间】:2020-04-03 01:34:48
【问题描述】:
这是我项目的结构。
- 父代不包含代码。
- module child1 是一个 Spring Boot 应用程序。
- 模块 child2、child3 是 jar 库。
- child1 依赖于 child2 和 child3
parent
| build.gradle
| settings.gradle
| [no code]
child1
| build.gradle
| src/
| main/
| java/
| resources/
| application.properties
| test/
| java/
| resources/
| application.properties
child2
| build.gradle
| src/
| main/
| java/
| test/
| java/
child3
| build.gradle
| src/
| main/
| java/
| test/
| java/
我有一个名为“datapath”的属性,我想将它注入到每个模块的类中。
“数据路径”有两种可能的值,一种用于测试,一种用于生产。
我将生产价值设置为
child1/src/main/resources/application.properties
和测试值
child1/src/test/resources/application.properties
我已尝试创建配置类并指定 PropertySource。 但是结果是,虽然 child1 在 test 和 main 中都选择了正确的应用程序属性,但是 spring 在其他模块中却没有找到它们。
你能为我提出一个实施策略吗?
特别是:
- child1 中的测试带有注解 SpringBootTest 但最好 child2 和 child3 不应依赖于 spring boot(只是用于自动装配的 spring 框架)
- 我希望能够在子模块中的配置类上使用@Value 注解。
- 如何指示 spring 从 child1 模块中的 application.properties 解析这些属性,使用 src/test/resources 中的一个进行测试,使用 src/main/resources 中的一个进行生产?
- 由于我选择了一个非常“经典”的结构,我希望能够用尽可能少的活动部件来实现这一点。特别是我不希望在注释中明确指定路径。
【问题讨论】:
标签: java spring spring-boot multi-module