本文讲述springboot的配置文件,包括.properties和.yml的配置文件,集成第三方配置,自定义属性,多环境配置
推荐访问我的个人网站,排版更好看: https://chenmingyu.top/springboot-properties/
系列教程: https://chenmingyu.top/tags/springboot/
在springboot支持以.properties和.yml结尾的配置文件
application.properties 格式如下:
#mysql 配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://ip:port/dataDB
spring.datasource.username=root
spring.datasource.password=root
#redis 配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=name
application.yml 格式如下:
spring:
#mysql配置
datasource:
url: jdbc:mysql://ip:port/dataDB
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#redis配置
redis:
host: 127.0.0.1
port: 6379
password: root
比较喜欢使用yml的方式,因为yml的代码更少而且层级关系更明显
集成第三方其实特别简单,比如Redis,步骤如下:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
spring:
#redis配置
redis:
host: 127.0.0.1
port: 6379
password: root
自定义属性就是在springboot中将在配置文件中自己定义的配置读取出来,一般使用的方式有两种,两个注解 @Value和@ConfigurationProperties
在配置文件中自定义属性如下:
my:
name: chenmingyu
age: 12
/**
* @auther: chenmingyu
* @date: 2018/11/3 22:32
* @description:
*/
@RestController
public class UserController {
@Value("${my.name}")
private String name;
@Value("${my.age}")
private Integer age;
@GetMapping("/getUserInfo")
private String getUserInfo(){
return String.format("@Value注入: %s_%s",name,age);
}
}
访问: http://localhost:8080/getUserInfo
定义一个user对象
/**
* @auther: chenmingyu
* @date: 2018/11/3 22:30
* @description:
*/
@Data
@Component
@ConfigurationProperties(prefix = "my")
public class User {
private String name;
private Integer age;
}
使用的时候直接注入bean使用
@Resource
private User user;
@GetMapping("/getUserInfoByBean")
private String getUserInfoByBean(){
return String.format("@ConfigurationProperties注入: %s_%s",user.getName(),user.getAge());
}
访问: http://localhost:8080/getUserInfoByBean
springboot的多环境配置文件名需要满足application-{profile}.properties的格式,{profile}对应你的环境
比如新建三个配置文件:
dev:开发环境,prod:生产环境,test:测试环境
在application-dev.yml 中配置:
my:
environment: dev
在application-prod.yml 中配置:
my:
environment: prod
在application-test.yml 中配置:
my:
environment: test
写个Controller测试一下:
/**
* @auther: chenmingyu
* @date: 2018/11/3 23:33
* @description:
*/
@RestController
public class propertiesController {
@Value("${my.environment}")
private String environment;
@GetMapping("/getEnvironment")
private String getEnvironment(){
return String.format("environment: %s",environment);
}
}
在application.yml 中指定dev环境:
spring:
#多环境配置
profiles:
active: dev
访问:http://localhost:8080/getEnvironment
修改application.yml 中指定prod环境:
spring:
#多环境配置
profiles:
active: prod