use*_*308 3 java spring spring-boot
我的申请结构如下
----
|
|____SpringBootApplicationA
|
|
|___module-1
|___module-2
Run Code Online (Sandbox Code Playgroud)
每个模块都有自己的配置,例如,module-1是与mysql通讯的库,它具有其配置(连接字符串,用户名,密码等)。
现在,我想在模块1中以Java POJO的形式表示此配置。application.yml还有一个读取配置并设置值的Bean。
例如
class Module1Config {
private String key1;
private String key2;
// getters & setters
}
Run Code Online (Sandbox Code Playgroud)
application.yml 在模块1
key1: val1
key2: val2
Run Code Online (Sandbox Code Playgroud)
现在作为模块1的使用者,SpringBootApplicationA将收到模块1的配置,该配置由模块1设置为默认值。
在消费者方面,它将具有这样的应用程序配置
someKey1: someVal1
someKey2: someVal2
module-1:
key1: overrideVal1
Run Code Online (Sandbox Code Playgroud)
当模块1的bean初始化时,我希望这些值被视为
key1: overrideVal1
key2: val2
Run Code Online (Sandbox Code Playgroud)
如何配置spring boot遵守默认值并覆盖它们?
编辑
class AppConfig {
private String key1;
private int key2;
private Module1Config conf;
// getters + setters
}
Run Code Online (Sandbox Code Playgroud)
这是我的示例应用程序配置,如您所见,它具有一些特定于应用程序配置的内容,并且它是从其他模块中利用的其他配置。
我希望conf对象从module1中获取分配的默认值集,然后将任何指定为覆盖的应用程序
默认情况下,Spring Boot从src / main / resources加载application.yml文件。您可以在根路径的config文件夹中声明另一个application.yml文件,而从config文件夹进行的配置将覆盖src / main / resources的配置。
配置位置以相反的顺序搜索。默认情况下,配置的位置是classpath:/,classpath:/ config /,file:./,file:./ config /。结果搜索顺序如下:
文件:./ config /文件:./ classpath:/ config / classpath:/
这是官方文档的链接:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
我认为这很有帮助
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |