展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

外部化配置

  • 常用外部配置源
Java属性文件、YAML文件、环境变量、命令行参数;
  • 启动类中获取环境变量
@SpringBootApplication
public class Boot09FeaturesProfileApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(Boot09FeaturesProfileApplication.class, args);
ConfigurableEnvironment environment = run.getEnvironment();
Map<String, Object> systemEnvironment = environment.getSystemEnvironment();
Map<String, Object> systemProperties = environment.getSystemProperties();
System.out.println(systemEnvironment);
System.out.println(systemProperties);
}
}
  • 控制层中获取环境变量
@RestController
public class HelloController {
// 获取yml文件中的变量,如果没有则使用默认值
@Value("${person.name:李四}")
private String name;
@Autowired
private Person person;
// 获取maven环境变量
@Value("${MAVEN_HOME}")
private String msg;
// 获取系统变量
@Value("${os.name}")
private String osName;
@GetMapping("/")
public String hello(){
return person.getClass().toString();
}
@GetMapping("/person")
public Person person(){
return person;
}
@GetMapping("/msg")
public String getMsg(){
return msg+"==>"+osName;
}
}
  • 配置文件查找位置

  • classpath 根路径

  • classpath 根路径下config目录中的yml文件优先级高于class path根路径的yml文件

  • jar包当前目录,当前目录下的配置文件优先级高于jar包中的配置

  • jar包当前目录的config目录,此时config目录下的配置文件优先级高于01目录下的配置文件

  • /config子目录的直接子目录,此时v1目录下的配置文件优先级高于config目录下的配置文件

  • 后面的可以覆盖前面的同名配置项

  • 配置文件加载顺序:

1.  当前jar包内部的application.properties和application.yml
2.  当前jar包内部的application-{profile}.properties 和 application-{profile}.yml
3.  引用的外部jar包的application.properties和application.yml
4.  引用的外部jar包的application-{profile}.properties 和 application-{profile}.yml
posted @   DogLeftover  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示