SpringBoot配置文件yaml与properties
类型application.properties
aoolication.yaml
1.配置文件
作用:修改springboot自动配置的默认值
YAML以数据为中心,
server:
port:8081
yaml语法:
-
用缩进来控制层级的关系
-
key:(空格)value表达键值对
-
属性和值大小写敏感
yaml里面的key可以些什么
1.字面量普通的值(数字,字符串,布尔)
字符串默认不加上单引号或者双引号
“”双引号会转义里面的特殊字符\n就是换行符
‘’单引号就会直接输出\n
key: value
2.对象,Map
friends:
lastName: xxxx
age: 20
friends: {lastName: xxx,age: 20}
3.数组
pets:
-(空格)xxx
- xxx
- xxx
行内写法
pets: [cat,dog,pig]
package com.chiguozi.springtest2.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
//默认加载全局加载文件的值
@ConfigurationProperties(prefix = "person")
//@ImportResource(value = {"classpath:beans.xml"})可以标注在一个配置类上,这样就可以加载beans.xml
//@PeopertySource(value = {"classpath:person.properties"})加载专用的
public class Person {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
person:
name: chiguozi
password: helloc
这样就可以自动注入文件
或者在properties这样写
person.name=chiguozi
person.password=helloc
#记得默认是gbk的要改成utf-8
@Value和@ConfigurationProperties中间的区别
或者在类里面的成员变量上面添加
@Value("${person.name}")或者
@Value("#{11*3}")
但是这种语法不支持松散语法的绑定,例如lastName和last-name的互等就是松散绑定。@ConfigurationProperties倒是支持这个
也有个最大的缺点,不能注入map类型
也不支持校验。
最后有个优点,那就是可以写算(SpEL)
springBoot推荐给容器中添加组件的方式——全注解
1.写配置类
@Configuration
public class MyConfig{
//将方法返回值添加到容器中;容器中这个组件默认的id就是方法名
@Bean
public HelloService helloService(){
return new HelloService();
}
}
2.调用的地方
public class xxx{
@AutoWired
ApplicationContext ioc;
public boolean xxx(){
return ioc.containsBean("helloService")
}
}
配置文件占位符
1.随机数
${random.int[1024,65536]}
${random.int(10)}
2.占位符获取之前配置的值
${xxx.xxx:默认值}
${xxx.xxx}