0
点赞
收藏
分享

微信扫一扫

外部化配置

  • 常用外部配置源

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 根路径
  • 外部化配置_jar包

  • classpath 根路径下config目录中的yml文件优先级高于class path根路径的yml文件
  • 外部化配置_配置文件_02

  • jar包当前目录,当前目录下的配置文件优先级高于jar包中的配置
  • 外部化配置_环境变量_03

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

  • /config子目录的直接子目录,此时v1目录下的配置文件优先级高于config目录下的配置文件
  • 外部化配置_环境变量_05

  • ​后面的可以覆盖前面的同名配置项​
  • 配置文件加载顺序:

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



举报

相关推荐

0 条评论