SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)

项目中使用配置文件主要是为了解决硬编码问题,下面我们就介绍如何获取配置文件中的值

一.在controller中获取配置文件的值

首先在配置文件中加上一个key,value

然后在controller中使用@PropertySource()注解指定配置文件的位置,使用@Value()注解获取配置文件的值

 SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第1张图片

启动项目并访问,已经获取到配置文件的值

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第2张图片

二.配置文件映射到bean中

有时候我们不一定在controller中使用到配置文件的属性,在其他地方也可能用到,这时候我们就将配置文件做成一个bean,一个配置类,在写配置类的时候就需要用另外一种方式把他注入进来

首先新建一个配置文件实体类,并加上@Component @ConfigurationProperties@PropertySource({"classpath:application.properties"})三个注解,使用@Value()注解获取到属性配置文件中的值,在配置文件中加上对应的字段

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第3张图片

@Component
@ConfigurationProperties
@PropertySource({"classpath:application.properties"})
public class ServerSettings {
    @Value("${test.name}")
    private String name;
    @Value("${test.domain}")
    private String domain;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDomain() {
        return domain;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }
}

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第4张图片

然后进行使用,在controller中注入这个实体类(在service等也可以使用)

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第5张图片

然后写一个访问方法进行测试:

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第6张图片

最后运行并访问测试,成功拿到注入的值

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第7张图片

不过这样写稍微有一丢丢的麻烦,在实体类中注入要写test.name,test.domain,前缀test要写两遍,@ConfigurationProperties注解可以将前缀带上,下面注入的时候就不用写前缀了:

SpringBoot2.X学习第十二课(SpringBoot注解把配置文件自动映射到属性和实体类)_第8张图片

注意:当使用前缀的时候就不要使用@Value()注解了,但是这时候属性值必须与配置文件中的相对应,如果使用了@Value()注解启动会报错,如下图所示:

如果不使用@ConfigurationProperties()注解加前缀,也可以不使用@Value()注解,前提是属性名称和配置文件里面的key一一对应,如果不一一对应,就要加@value("${XXX}")获取配置文件中的key,再注入给实体类中的字段

我们加前缀在开发中主要是为了模块之间的区分,比如支付,订单等等,可以新建对应的配置类,

源码地址:https://gitee.com/xuxinsunqizheng/SpringBoot2.0.git 

 

 

 

 

 

你可能感兴趣的:(springboot)