项目中使用配置文件主要是为了解决硬编码问题,下面我们就介绍如何获取配置文件中的值
一.在controller中获取配置文件的值
首先在配置文件中加上一个key,value
然后在controller中使用@PropertySource()注解指定配置文件的位置,使用@Value()注解获取配置文件的值
启动项目并访问,已经获取到配置文件的值
二.配置文件映射到bean中
有时候我们不一定在controller中使用到配置文件的属性,在其他地方也可能用到,这时候我们就将配置文件做成一个bean,一个配置类,在写配置类的时候就需要用另外一种方式把他注入进来
首先新建一个配置文件实体类,并加上@Component @ConfigurationProperties@PropertySource({"classpath:application.properties"})三个注解,使用@Value()注解获取到属性配置文件中的值,在配置文件中加上对应的字段
@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;
}
}
然后进行使用,在controller中注入这个实体类(在service等也可以使用)
然后写一个访问方法进行测试:
最后运行并访问测试,成功拿到注入的值
不过这样写稍微有一丢丢的麻烦,在实体类中注入要写test.name,test.domain,前缀test要写两遍,@ConfigurationProperties注解可以将前缀带上,下面注入的时候就不用写前缀了:
注意:当使用前缀的时候就不要使用@Value()注解了,但是这时候属性值必须与配置文件中的相对应,如果使用了@Value()注解启动会报错,如下图所示:
如果不使用@ConfigurationProperties()注解加前缀,也可以不使用@Value()注解,前提是属性名称和配置文件里面的key一一对应,如果不一一对应,就要加@value("${XXX}")获取配置文件中的key,再注入给实体类中的字段
我们加前缀在开发中主要是为了模块之间的区分,比如支付,订单等等,可以新建对应的配置类,
源码地址:https://gitee.com/xuxinsunqizheng/SpringBoot2.0.git