spring boot 获取配置文件的值 1.yaml形式配置 2.properties形式配置
1.yaml
Persion:
name: 张三
age: 18
birthday: 2017/8/21
pets: {name: dog,age: 2}
frients: [lisi,wangwu,zhaoliu]
2.java
在需要使用读取yaml配置文件中的值的时候需要添加@configurationproperties 注解prefix标记了需要读取配置文件中那个那个配置下的属性进行一一映射
@Data
@ConfigurationProperties(prefix = "Persion")
@Component
public class Persion implements Serializable {
public String name;
public int age;
public Date birthday;
public Map<String,Object> pets;
public List<String> frients;
}
@Data
public class Pet implements Serializable {
public String name;
public Integer age;
}
如果不使用@configurationproperties注解系统会报
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
如果不添加prefix属性时,获取的属性值都为null
在包装map类型时,map的值如果为对象,需要使用Object或者?标识,不然系统会报系统无法转换错误
3.controller
@Controller
public class Test {
@Autowired
private Persion persion;
@RequestMapping("/sayHello")
@ResponseBody
public Persion sayHello(){
return persion;
}
}
4.pom文件
需要读取yaml配置文件中的值时需要在pom文件中添加配置文件解析器,该解析器的作用是将配置文件中的值和标记了@configurationproperties的类的属性进行对应映射
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.properties形式配置
server.port=8082
Persion.age=12
Persion.birthday=207/12/12
Persion.frients=a,c,v
Persion.name=李四
Persion.pets.name="dog"
Persion.pets.age=3
在properties配置文件中使用中文时需要进行设置,idea需要在读取时将文件转码,在file->setting->editor->file encodings下把transparent native-to-ascll conversion勾选上就行了。