将一些全局变量在配置文件中定义,供全局使用。

1、application.yml配置变量,@Value读取。

application.yml配置:

# application.yml
spring:
  application:
    name: laoluo-base
server:
  port: 9090

#自定义的一些全局变量
my-path:
  oss: aliyun
  file: aliyuncs
  img: centos

比如上这个myPath变量组下面有三个变量,那么我们就可以通过@Value(${xxx})来获取。

   @Value("${my-path.oss}")
    private String osPath;

    @GetMapping("/demo1")
    public String yamlDemo1 (){
        return osPath;
    };

2、application.yml配置多个变量时,可以用@ConfigurationProperties配置类读取。

@Component
@ConfigurationProperties(prefix="my-path")
public class MyPath {

    private String oss;
    private String file;
    public void setFile(String file) {
        this.file = file;
    }

    public void setOss(String oss) {
        this.oss = oss;
    }

    public String getFile() {
        return file;
    }

    public String getOss() {
        return oss;
    }
}

注意:要加@Componet或@Service使注入容器。同时要用setter(setXXX)。

然后,我们在Controller就可以使用了:

@RestController
@RequestMapping("/yaml")
public class GetYaml {
    @Resource
    private MyPath myPath;

    @GetMapping("/demo2")
    public String yamlDemo2 (){
        // MyPath 是一个配置类
        return myPath.getOss();
    };
}

注意:myPah不可以通过new对象创建,只能@Resource或@Autowired自动装配。

同时,添加依赖支持:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

当然,我们也可以不使用ConfigurationProperties这个配置,而是使用@Config +@Value在配置类中引用。只是这样效率不高,示例如下:

3、通过Environment读取

所有在配置文件中生效的属性,都可以通过Environment读取。

    @GetMapping("/demo3")
    public String yamlDemo3 (){
        // environment 是系统自带的环境配置类
        return environment.getProperty("my-path.file");
    }

4、springboot共有5种方式读取

另外两种是原生方式读取、@PropertySource读取。但一般不常用,可以参见:(5条消息) SpringBoot 读取配置文件的 5 种方法!_springboot读取外部配置文件_肥肥技术宅的博客-CSDN博客

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐