1. @Value

我们可以通过 @Value 注解将配置文件中的值映射到一个 Spring 管理的 Bean 的字段上。

例如:

application.yml 配置如下:

person: 
  name: zhangsan 
  age: 18

实体 Bean 代码如下:

@Controller
public class QuickStartController { 
    @Value("${person.name}") 
    private String name; 
    @Value("${person.age}") 
    private Integer age; 
    
    @RequestMapping("/quick") 
    @ResponseBody public String quick(){ 
        return "springboot 访问成功! name="+name+",age="+age; 
    } 
}

2. @ConfigurationProperties

通过注解 @ConfifigurationProperties(prefifix="配置文件中的key的前缀") 可以将配置文件中的配置自动与实体进行映射。

application.yml 配置如下:

person: 
  name: zhangsan 
  age: 18

实体 Bean 代码如下:

@Controller
@ConfigurationProperties(prefix = "person")
public class QuickStartController { 
    private String name; 
    private Integer age; 
    
    @RequestMapping("/quick") 
    @ResponseBody public String quick(){ 
        return "springboot 访问成功! name="+name+",age="+age; 
    } 
}

可以通过 @PropertySource(value = “config.properties”) 指定配置文件路径。 支持 propertiew 文件,默认不支持 yml.
若要支持 yml, 参考 @PropertySource加载yml

3. Environment

通过注入 Environment ,读取配置文件

application.yml 配置如下:

person: 
  name: zhangsan 
  age: 18

实体 Bean 代码如下:

@Slf4j
@Service
public class TestService {

    @Resource
    private Environment environment;

    public void test() {
        System.out.println(environment.getProperty("person.name"));
    }
}

4. System Properties

除了读取配置文件外,可以通过 System.getProperty() 读取环境变量

public void test() {
    System.out.println(System.getProperty("file.separator"));
    Properties properties = System.getProperties();
    for (String stringPropertyName : properties.stringPropertyNames()) {
        System.out.println(stringPropertyName + "=" + properties.getProperty(stringPropertyName));
    }
}