Srping boot 配置文件详解
Spring Boot 自动化配置
Spring Boot 提供了对应用进行自动化配置。相比以前 XML 配置方式,很多显式方式申明是不需要的。Spring boot 开发起来,使我们就简化了很多步骤和不必要的代码。
自定义属性与加载
- 使用application.properties
- 使用application.yml
<font color=#ff0000 size=4 face="黑体">使用application.properties方式</font>
person.name=测试环境
person.age=22
person.desc=我叫 ${person.name},今年${person.age}
person.user.name=开发
person.user.age=22
person.user.desc=我叫 ${person.name},今年${person.age}
server.port=8080
<font color=#ff0000 size=4 face="黑体">使用application.yml</font>
person:
name: 生产环境
age: 22
desc: 我叫 ${person.name},生产了${person.age}
user:
name: 开发
age: 22
desc: 我叫 ${person.name},生产了${person.age}
server:
port: 80
获取属性的方法也有2个种
方法一:直接获取,利用@Value,直接写出属性的名字,来获取属性的值
@Setter
@Getter
@Component
public class Person {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@Value("${person.desc}")
private String desc;
}
方法二:使用前缀获取,利用@ConfigurationProperties注解配置前缀。然后属性名对应一样即可(这个更方便,建议用这种)
@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "person.user")
public class User {
private String name;
private Integer age;
private String desc;
}
写一个Controller 来测试效果
@RestController
public class Hello {
@Autowired
private User user;
@Autowired
private Person person;
@GetMapping(value = "user")
public String user(){
return user.getDesc();
}
@GetMapping(value = "person")
public String person(){
return person.getDesc();
}
}
小Q截图-20171012105248.png
小Q截图-20171012105302.png
环境切换
在实际的开发中,因为数据库配置、Redis 配置、注册中心和日志配置等的配置不同,所以我们有时候需要多种配置环境。例如,测试环境配置、开发环境配置、生产环境配置等。
小Q截图-20171012110119.png- application-dev.properties:开发环境
- application-test.properties:测试环境
- application-prod.properties:生产环境
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
如:spring.profiles.active=test就会加载application-test.properties配置文件内容
注意点:application.properties 配置中文值的时候,读取出来的属性值会出现乱码问题。
application.yml则不会出现乱码问题
参考文章:
http://blog.didispace.com/springbootproperties/
http://www.bysocket.com/?p=1786
网友评论