在我們的開發(fā)中,有很多配置文件是需要分開配置的,例如kafka.properties,amq.properties等,那這些自定義的配置文件,怎么加載到對(duì)應(yīng)的類里面了,下面就來說說這個(gè)問題。
在src/main/resources目錄下新建一個(gè)config文件夾,用來存放我們的properties文件。目錄結(jié)構(gòu)如下:
user.properties配置文件內(nèi)容如下:
- com.chhliu.springboot.author=xyy
- com.chhliu.springboot.age=${com.chhliu.age}
- com.chhliu.springboot.sex=woman
- com.chhliu.springboot.time=20170123
- com.chhliu.age=27
對(duì)應(yīng)的配置類如下:
- public class ConfigProperties {
-
- private String author;
- private int age;
- private String sex;
- private String time;
- public String getAuthor() {
- return author;
- }
- public void setAuthor(String author) {
- this.author = author;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public String getTime() {
- return time;
- }
- public void setTime(String time) {
- this.time = time;
- }
- @Override
- public String toString() {
- return "ConfigProperties [author=" + author + ", age=" + age + ", sex=" + sex + ", time=" + time + "]";
- }
- }
我們?cè)趺磥韺⑴渲梦募锩鎸?duì)應(yīng)的屬性注入到類中了,方法有二
1、過時(shí)方法
1.1 在ConfigProperties類上加上如下注解:
- @ConfigurationProperties(locations="classpath:config/user.properties", prefix="com.chhliu.springboot")
其中l(wèi)ocations屬性用來指定配置文件的位置,prefix用來指定properties配置文件中的key前綴
1.2 在主類上加入配置支持
- @EnableConfigurationProperties(ConfigProperties.class)
這樣就可以將properties配置文件中的值注入到類中對(duì)應(yīng)的屬性上去了,但是上面的這種方式已經(jīng)被標(biāo)注為過時(shí)了,在新的版本中是不可用的。
2、替代方法
1.1 在ConfigProperties類上加上如下注解:
- @Component// 以組件的方式使用,使用的時(shí)候可以直接注入
- @ConfigurationProperties(prefix="com.chhliu.springboot")// 用來指定properties配置文件中的key前綴
- @PropertySource("classpath:config/user.properties")// 用來指定配置文件的位置
1.2 關(guān)閉配置屬性的支持
這一步就是將主類上的@EnableConfigurationProperties這個(gè)注解注釋調(diào),不讓springboot自動(dòng)配置,使用我們的手動(dòng)配置
3、測(cè)試結(jié)果
- ConfigProperties [author=xyy, age=27, sex=woman, time=20170123]
從上面的測(cè)試結(jié)果,可以看出,配置生效了。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。