目录
一、在项目代码中,直接读取配置文件application.yml中的数据
二、通过yaml配置文件,给类注入数据
一、在项目代码中,直接读取配置文件application.yml中的数据
使用@Value注解。
如:
在spring boot 中,application.yml 配置数据。
在代码中,想要使用Student 与address这个数据。使用@Value注解,直接读取yaml配置文件的数据。
读取Student对象的name属性
在浏览器中做请求
直接读取address的值
浏览器请求
通过冒号来设置默认值
浏览器中做请求
属性school的值,取的是yaml文件中Student.school 的值。 如果第一级Student,在yaml文件中不存在,启动项目会直接报错。
如果第二级不存在,如Student.school,启动项目时,不会报错,而是这个值为空。
二、通过yaml配置文件,给类注入数据
引入包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
如,我们项目中有一个Person类,我们将Person类对象的数据写到yaml文件中。通过spring注入Person实体类时,数据就是我们在yaml中配置的数据。
举例:
项目中,有一个Person类
第一步,在Person中使用注解@ConfigurationProperties
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "per")
public class Person {
private String name;
private int age;
}
注意prefix = "per",中的per就是我们给Person类自定义的别名。
这个类,必须交给spring管理(使用@Component注解,不然会报错)
第二步,在yaml文件中,给实体类写入数据
在application.yml中,注意,对象的key(图中per)要对应@ConfigurationProperties注解设置的别名
给属性设置值,属性的名称要与类中的属性名称保持一致。
第三步,读取yaml中的实体类
使用spring的@Autowired注解,注入实体类
import com.example.com_chenshuai.entity.Person;
import com.example.com_chenshuai.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
@RestController
public class HiController {
@Autowired
private Person person;
@RequestMapping("/getPerson")
public Person getPerson(){
return person;
}