02Spring Boot配置文件详解
自定义属性
- 在src/main/java/resources目录下创建一个application.properties或application.yml
- 在application.yml自定义一组属性
my:
name: boot
age: 12
- 读取配置文件的值只需要加@Value("${属性名}")
@RestController
public class ConfigController {
@Value("${my.name}")
private String name;
@Value("${my.age}")
private int age;
@RequestMapping(value = "/config")
public String config(){
return name+":"+age;
}
}
- 启动项目,访问:localhost:8080/config
将配置文件的属性赋给实体类
- 当配置中有很多属性时,可以把这些属性作为字段创建javabean,并将属性值赋予给他们
my:
name: boot
age: 20
# ${random} ,用来生成各种不同类型的随机值。
number: ${random.int}
uuid: ${random.uuid}
max: ${random.int(10)}
value: ${random.value}
greeting: hi,i'm ${my.name}
- 创建一个javabean,并添加注解@ConfigurationProperties(prefix = "my")
@ConfigurationProperties(prefix = "my")
public class ConfigBean {
private String name;
private int age;
private int number;
private String uuid;
private int max;
private String value;
private String greeting;
get...set...省略
使用idea自动生成get,set和toString
}
- 在应用类或启动类上增加注解
@EnableConfigurationProperties({ ConfigBean.class })
- 添加ConfigBeanController类
@RestController
public class ConfigBeanController {
@Autowired
private ConfigBean configBean;
@RequestMapping("/configbean")
public String config(){
// 输出所有字段的值
return configBean.toString();
}
}
- 启动项目,访问http://localhost:8080/configbean
自定义配置文件
- application配置文件是系统默认的,我们可以添加其他名称的配置文件,如test.properties(不能是test.yml,测试读不到数据)
com.boot.name=boot
com.boot.age=20
- 添加TestBean,需要指定文件名和前缀
@Configuration
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "com.boot")
public class TestBean {
private String name;
private int age;
省略get,set,tostring
}
- 添加TestBeanController
@EnableConfigurationProperties({TestBean.class})
@RestController
public class TestBeanController {
@Autowired
private TestBean testBean;
@RequestMapping("/testconfig")
public String testConfig() {
return testBean.toString();
}
}
- 启动项目,返回http://localhost:8080/testconfig
多个环境配置文件
- 在现实的开发环境中,我们需要不同的配置环境;格式为application-{profile}.properties,其中{profile}对应你的环境标识,比如
- application-test.properties:测试环境
- application-dev.properties:开发环境
- application-prod.properties:生产环境
- 实际使用的配置文件,通过在application.yml中增加:
spring:
profiles:
active: dev
- 添加application-dev.yml
my:
name: dev
age: 11
#server:
# port: 8082
- 启动程序,访问http://localhost:8080/config,发现读取的是application-dev.yml中的配置
- 访问http://localhost:8080/configbean,会发现,当application-dev.yml和application.yml中有重名的字段时,前者会覆盖后者的值。
ConfigBean{name='dev', age=11, number=-1422131996, uuid='5bebc511-f1a4-4f2b-95ed-540e4b48e8bd', max=0, value='8b96a5bbde492fb189e4fa52573c9caf', greeting='hi,i'm dev'}