SpringBoot读取配置文件中的变量值

SpringBoot读取配置文件中的变量值

需求分析

​ 在一些项目中需要修改信息以适应不同项目环境(如上传的文件保存路径在开发环境与正式环境不同、使用代理时个人账户信息),而将代码与配置信息进行解耦是有必要的,这些信息可以置于配置文件中,不用每次修改时都去对应代码处修改。

解决方案

Spring Boot项目中要在其他类中读取application.yaml配置文件信息,可以使用@Value注解或Environment对象。下面是两种方法的示例:

方法一:使用@Value注解

  1. 在配置文件中,假设有一个属性example.message
example:
  message: "Hello, World!"
  1. 在类中,使用@Value注解来注入配置属性的值:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyConfigClass {
    @Value("${example.message}")
    private String message;
    
    public String getMessage() {
        return message;
    }
}

在上面的例子中,@Value("${example.message}")告诉Spring从配置文件中注入example.message属性的值到message字段中。

方法二:使用Environment对象

  1. 在配置类中添加一个Environment类型的字段,并使用@Autowired注解注入它:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class MyConfigClass {
    private final Environment env;
    
    @Autowired
    public MyConfigClass(Environment env) {
        this.env = env;
    }
    
    public String getMessage() {
        return env.getProperty("example.message");
    }
}

​ 在上面的例子中,我们通过env.getProperty("example.message")方法来获取配置属性的值。使用Environment对象可以更加灵活地获取配置属性,并且支持更多的配置源。

​ 无论你选择哪种方法,都可以在其他类中读取到配置文件中的信息。记得确保你的类是一个Spring管理的bean(使用@Component@Service@Repository等注解),这样Spring才会自动注入配置属性的值。

posted @ 2023-12-18 14:59  ran_ran  阅读(761)  评论(0编辑  收藏  举报