在 SpringBoot 的核心配置文件中,除了使用内置的配置项之外,还可以在自定义配置,然后采用相关注解去读取配置的属性值。
@Value
@Value
注解用于逐个读取 application.properties
中的配置
例如在 application.properties
自定义两个属性
name=gushi
address=China
在 HelloController 中定义属性,并使用@Value 注解或者自定义配置值
package com.gushi.demo.web;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@Value("${name}")
private String name;
@Value("${address}")
private String address;
@RequestMapping(value = "/say")
public @ResponseBody String say(){
return "姓名:" + name + " 住址:" + address;
}
}
进行测试,可以看到能够读出配置中的值。
@ConfigurationProperties
@ConfigurationProperties
注解将整个文件映射成一个对象,用于自定义配置项比较多的情况。
例如在 application.properties
自定义几个属性
flower.name=peony
flower.colour=red
animal.name=pig
animal.colour=white
创建一个配置类
在 ConfigurationProperties
注解中添加属性 prefix
,用来区分同名配置。
package com.gushi.demo.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component // 将此类交给Spring容器管理
@ConfigurationProperties(prefix = "flower") // 将该类设置为配置类,将整个文件映射成一个对象。
public class ConfigInfo {
private String name;
private String colour;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
}
在 HelloController
类中添加测试方法
package com.gushi.demo.web;
import com.gushi.demo.config.ConfigInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@Autowired // 注入 ConfigInfo 配置类
private ConfigInfo configInfo;
@RequestMapping(value = "/say")
public @ResponseBody String say(){
return "flower.name:" + configInfo.getName() + "===flower.colour:" + configInfo.getColour();
}
}
运行测试
https://www.bilibili.com/video/BV1PZ4y1j7QK?p=15&spm_id_from=pageDriver