概述
配置文件简介
Spring Boot 项目使用一个全局的配置文件 application.properties
或者是 application.yml
,在 resources
目录下或者类路径下的 /config
下,一般我们放到 resources
下。
application.properties和application.yml都是spring boot的配置文件,但是两种配置文件的里面添加配置却不一样。yml这种方式更有层次感,它是天生就是一种树型建构,可读性更强,如下所示:
- application.properties:
- application.yml
更多配置
注意
- application.properties优先级高于application.yml
- 建议优先使用application.yml,官方给的很多demo,都是用yml文件配置的。
- 将.properties里面的配置key换成yml只需要将“.”换成“:”,然后换行,将“=“ 换成“:”,在value前面一定要有一个空格,同一个key必须合并到一个树结构下。
- 字符串默认不用加上单引号或者双引号;
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan n lisi”:输出;zhangsan 换行 lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan n lisi’:输出;zhangsan n lisi
yml 文件规则
- key: value 格式书写
- key 后面跟着冒号,再后面跟着一个空格,然后是值
- yml不支持tab缩进
- 可以使用 “-小写字母” 或 "_小写字母"来 代替 “大写字母”,如 userName 与 user-name、user_name 含义是一样的
解决Intellij下配置文件乱码问题
yml常见格式
-
普通的值(数字,字符串,布尔)
字符串默认不用加上单引号或者双引号,比如:
"":双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan n lisi”:输出;zhangsan 换行 lisi
’’:单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan n lisi’:输出;zhangsan n lisi -
对象、Map (属性和值) (键值对)
对象还是k: v的方式。k: v:在下一行来写对象的属性和值的关系;注意缩进(不支持tab,使用空格) -
数组 (List、Set)
数组(List、Set)用- 值表示数组中的一个元素
yml配置文件读取
方式一:@Value
配置文件内容:
name: hc
age: 18
content: "${name}的年龄是:${age}"
Controller代码:
@RestController
public class YmlInfoController {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
@Value("${content}")
private String info;
@RequestMapping("/f1")
public String f1() {
System.out.println(name + "t" + age);
return info;
}
}
注意:@Value所在的类需要是一个组件,如果是实体类需要加上@Component注解。
方式二:@ConfigurationProperties
示例1:
配置文件内容:
stu:
num: 1001
name: zhangsan
age: 18
实体类:
创建实体类,使用@Component注释,同时使用@ConfigurationProperties并通过prefix (前缀)指定相应的 key 就可以了
@Component
@ConfigurationProperties(prefix = "stu")
public class YmlInfo {
private Integer num;
private String name;
private Byte age;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getAge() {
return age;
}
public void setAge(Byte age) {
this.age = age;
}
}
Controller代码:
在Controller中通过@Autowired加载即可
@RestController
public class YmlInfoController {
@Autowired
private YmlInfo ymlInfo;
@RequestMapping("/f2")
public YmlInfo f2(){
return ymlInfo;
}
}
示例2:
配置文件内容:
bean:
map:
num: 1001
name: zhangsan
age: 18
array: 1,2,3,4,5,6
list:
- swim
- jump
- run
- read
实体类:
@Component
@ConfigurationProperties(prefix = "bean")
public class YmlInfo {
private Integer num;
private String name;
private Byte age;
private Map<String,Object> map;
private String[] array;
private List<String> list;
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Byte getAge() {
return age;
}
public void setAge(Byte age) {
this.age = age;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public String[] getArray() {
return array;
}
public void setArray(String[] array) {
this.array = array;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
}
Controller代码:
@RestController
public class YmlInfoController {
@Autowired
private YmlInfo ymlInfo;
@RequestMapping("/f22")
public YmlInfo f22(){
return ymlInfo;
}
}
方式三:@Environment
配置文件内容:
array: 1,2,3,4,5,6
favorite:
-swim
-jump
-run
-read
Controller代码:
@RestController
public class YmlInfoController3 {
@Autowired
private Environment environment;
@RequestMapping("/f3")
public String f3() {
String array = environment.getProperty("array");
System.out.println(array);
String favorite = environment.getProperty("favorite");
return favorite;
}
}
最后
以上就是无私黄蜂为你收集整理的SpringBoot配置文件讲解 及 读取配置文件简介yml配置文件读取的全部内容,希望文章能够帮你解决SpringBoot配置文件讲解 及 读取配置文件简介yml配置文件读取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复