外部化配置
- 常用外部配置源
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?