Spring Boot项目的配置文件通常放在application.properties / application.yml文件中,读取配置非常方便,有三种方式可以读取。
一、单环境配置
配置文件内容如下(选取下面一种文件格式):
application.properties文件:
# application.properties
com.xl.name=乐呵呵
application.yml文件:
# application.yml(注意‘:’冒号后面要跟一个空格)
com:
xl:
name: 乐呵呵
1、通过@Value注解读取配置
HelloController.java文件
@RestController
public class HelloController {
@Value("${com.xl.name}")
private String name;
@GetMapping("/hello")
public String hello() {
return "@Vallue方式读取配置文件:" + name;
}
}
在浏览器访问http://localhost:8080/hello,成功读取到配置文件的内容。
2、自定义配置类读取配置
自定义配置类:MyConfig.java
@ConfigurationProperties(prefix="com.xl")
@Component
public class MyConfig {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
HelloController.java文件
@RestController
public class HelloController {
@Autowired
private MyConfig myConfig;
@GetMapping("/hello1")
public String hello() {
return "自定义配置文件读取:" + myConfig.getName();
}
}
在浏览器访问http://localhost:8080/hello1,成功读取到配置文件的内容。
3、通过Environment的getProperty方法读取
HelloController.java文件
@RestController
public class HelloController {
@Autowired
private Environment env;
@GetMapping("/hello2")
public String hello() {
return "Environment的getProperty方法读取配置文件:" + env.getProperty("com.xl.name");
}
}
在浏览器访问http://localhost:8080/hello1,成功读取到配置文件的内容。
注:@RestController = @Controller + @ResponseBody :可以直接返回json数据格式
@GetMapping = @RequestMapping(value = “/hello”, method=RequestMethod.GET):get请求
@PostMapping = @RequestMapping(value = “/hello”, method=RequestMethod.POST):post请求
二、多环境配置
在开发中,项目会被部署到测试环境、uat环境和正式环境(生产环境)等,但是每个环境的配置信息不相同,如数据库配置、MQ配置等,这里就需要多环境配置。
我们可以定义多个配置文件,每个配置文件对应一个环境,配置文件名称:application-环境.properties或者application-环境.yml。例如application-test.yml、application-dev.yml等。其中application.yml配置文件是通用的,不区分环境。
1、激活配置文件
application.properties文件激活测试环境示例:
spring.profiles.active=test
application.yml文件激活开发环境示例:
spring:
profiles:
active: dev
启动项目时指定配置文件:
java -jar ***.jar --spring.profiles.active=test
2、优先级
①同级目录下,.properties配置文件优先级高于.yml配置文件;
②配置文件可以放到不同的目录下,优先级如下:
file:./config/ (当前项目路径config目录下) > file:./ (当前项目路径下) > classpath:/config/ (类路径config目录下) > classpath:/ (类路径config下)