SpringBoot读取yaml或者yml文件的三种方法
- @Value注解(直接读取)
- Environment(封装后读取)
- 实体类封装属性(封装后读取)
配置文件里面的信息如下:
一、使用value注解赋值属性
在类中定义好属性,属性上方使用@Value("${name}")注解,一级属性直接写入属性名称,二级属性中间用.读取,数组类型数据用数组[ ]读取
- 单个使用方便,灵活性高
- 获取配置文件数据多时,需要些使用大量的@Value,不方便开发
@RestController
public class BookController {
@Value("${lesson}")
private String lesson;
@Value("${server.port}")
private Integer port;
@Value("${enterprise.subject[0]}")
private String subject_00;
@RequestMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(lesson);
System.out.println(port);
System.out.println(subject_00);
}
二、使用Environment类读取
使用org.springframework.core.env.Environment包下的Environment类读取
@RestController
public class BookController {
@Autowired
private Environment environment;
@RequestMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(environment.getProperty("lesson"));
System.out.println(environment.getProperty("server.port"));
System.out.println(environment.getProperty("enterprise.age"));
System.out.println(environment.getProperty("enterprise.subject[1]"));
return "hello,spring boot";
}
}
定义Environment类型属性,用@Autowired注解自动注入,调用environment。getProperty方法
写入配置文件属性名字,就可以读取数据了
三、定义一个实体类
定义一个实体类,将它交给IOC容器管理,使用@ConfigurationProperties(prefix="name")注解关联配置文件中的属性。将要读取的属性在实体类中定义出来,生成Get和Set方法
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
private String name;
private Integer age;
private String tel;
private String[] subject;
@Override
public String toString() {
return "Enterprise{" +
"name='" + name + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", subject=" + Arrays.toString(subject) +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String[] getSubject() {
return subject;
}
public void setSubject(String[] subject) {
this.subject = subject;
}
}
在调用地方实例化类,注入对象,使用Get方法获取想要的属性
@RestController
public class BookController {
@Autowired
private Enterprise enterprise;
@RequestMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(enterprise);
return "hello,spring boot";
}
}