自学内容网 自学内容网

SpringBoot获取配置文件中的配置项


SpringBoot中获取配置项的常用方式

主要是@Value注解、使用Environment对象、@ConfigurationProperties注解

在application.properties配置文件中,有一个配置项:test.config.version=111
配置项的名称是:test.config.version,对应的值为111
在这里插入图片描述
在SpringBoot中,如何获取它的具体值?

一、@Value注解

@RestController
@RequestMapping("/test")
@Slf4j
public class TestController {
    // 冒号后面可以设置该配置项的默认缺省值,当这个配置项不存在或者值为空的时候,它的值就是冒号后面的值
    @Value("test.config.version:222")
    private String conf;
    
    @RequestMapping("/config2")
    public String getConfig2(){
        log.info("test.config.version :{} " , conf);
        return conf;
    }
}

结果:
在这里插入图片描述

二、使用Environment对象

实现EnvironmentAware接口,让spring把environment对象注入到要使用它的bean中,调用getProperty方法获取配置项的值。

@RestController
@RequestMapping("/test")
@Slf4j
public class TestController implements EnvironmentAware {

    private Environment environment;
    
    @Override
    public void setEnvironment(Environment environment) {
        this.environment = environment;
    }

    @RequestMapping("/config1")
    public String getConfig1(){
        log.info("test.config.version :{} " ,environment.getProperty("test.config.version"));
        return environment.getProperty("test.config.version");
    }
   
}

结果:
在这里插入图片描述

三、@ConfigurationProperties注解

写一个配置类,利用@ConfigurationProperties注解来指定该类对应的配置项的前缀,成员变量的名字就是配置项的后缀,这个类的成员变量用于承接对应的配置项的值。
@Data注解是Lombok提供的,可以自动生成getter和setter。

@Component
@ConfigurationProperties(prefix = "test.config")
@Data
public class TestConf {
    
    // 相当于test.config.version的值,就注入到了该成员变量中
    private String version;

}
@RestController
@RequestMapping("/test")
@Slf4j
public class TestController implements EnvironmentAware {
    @Resource
    TestConf testConf;
    
    @RequestMapping("/config3")
    public String getConfig3(){
        log.info("test.config.version :{} " , testConf.getVersion());
        return testConf.getVersion();
    }
}

结果:
在这里插入图片描述


原文地址:https://blog.csdn.net/Atlasgorov/article/details/143818472

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!