springboot?yml配置文件值注入方式
yml配置文件值注入
搭建項(xiàng)目
參考 IDEA快速搭建spring-boot項(xiàng)目(Spring initializr)
pom.xml
創(chuàng)建項(xiàng)目后,還需在pom.xml中的<dependencies>標(biāo)簽添加該依賴。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
創(chuàng)建實(shí)體類
package com.demo.demo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; @Override public String toString() { return "person{" + "name='" + name + '\'' + ", age=" + age + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
spring boot核心配置文件application.yml
1.將application.properties文件后綴改為.yml,內(nèi)容為:
server: port: 8080 person: name: 小狗 age: 21
測(cè)試類
package com.demo.demo; import com.demo.demo.Person; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class DemoApplicationTests { @Autowired Person person=new Person(); @Test public void contextLoads() { System.out.println(person); } }
運(yùn)行
結(jié)果:
自動(dòng)注入yml文件和properties文件
在springboot中,如果需要使用到配置文件中的數(shù)據(jù),自動(dòng)注入即可,非常方便,但是在使用yml中的屬性時(shí),自動(dòng)注入?yún)s失效了? 發(fā)現(xiàn),如果是properties文件,直接注入即可,但是yml需要增加一個(gè)配置
yml文件的自動(dòng)注入class
yml文件相對(duì)于properties較整潔和簡(jiǎn)便,在自動(dòng)注入的使用需要增加配置
增加pom依賴
? <!--*.yml auto inject config--> ? ?<dependency> ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ?<artifactId>spring-boot-configuration-processor</artifactId> ? ? ? ?<optional>true</optional> ? ?</dependency>
增加配置類
public class YamlPropertyLoaderFactory ?extends DefaultPropertySourceFactory { ? ? @Override ? ? public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException { ? ? ? ? if (null == resource) { ? ? ? ? ? ? super.createPropertySource(name, resource); ? ? ? ? } ? ? ? ? return new YamlPropertySourceLoader().load(resource.getResource().getFilename(), resource.getResource(),null); ? ? } }
注入指定yml配置文件到實(shí)體類中
/** ?* 在需要注入的class類上加上這3個(gè)注解即可 ?*/ @Configuration @PropertySource(value = "classpath:application-quartz.yml", factory = YamlPropertyLoaderFactory.class) @ConfigurationProperties(prefix = "quartz") public class JobTime { ? ? private String articleCarwler; ? ? private String earthlySweetSentenceApi; ? ? private String rainbowFartApi; ? ? private String qqRobotMsgTimer; }
說(shuō)明:
@PropertySource(value = "classpath:application-quartz.yml", factory = YamlPropertyLoaderFactory.class)
這個(gè)注解表示注入哪個(gè)配置文件,指定第二步中的配置類
@ConfigurationProperties(prefix = "quartz")
表示指定配置文件中的屬性是什么前綴,可忽略,例如:quartz.articleCarwler=0 0/5 * * * ?
Properties配置文件自動(dòng)注入
properties類型的配置文件就比較簡(jiǎn)單,不需要增加上面的依賴和配置,直接指定注入即可
直接注入屬性到class
@Configuration @PropertySource("classpath:/application.properties") @ConfigurationProperties(prefix = "quartz") public class JobTime { ? ? private String task1; ? ? private String task2; }
說(shuō)明:
@PropertySource("classpath:/application.properties")
指定配置文件名稱
@ConfigurationProperties(prefix = "quartz")
指定配置文件中的key的前綴,可忽略此注解, 例如:quartz.task1=0 3 * * * ?
代碼中直接注入
如果是在代碼中使用單獨(dú)的屬性,不需要將屬性都注入到class中,那么可直接使用注解注入到變量中,在代碼中直接使用
無(wú)論是yml還是properties都可以直接注入,不需要其他配置
使用注解:@Value("${key}") 就可以直接注入。
例如:
? ? @Value("${quartz.taks1}") ? ? private String taks1;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ) Servlet監(jiān)聽器詳解
這篇文章主要介紹了Java基礎(chǔ) Servlet監(jiān)聽器詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07編寫Java代碼對(duì)HDFS進(jìn)行增刪改查操作代碼實(shí)例
這篇文章主要介紹了Java代碼對(duì)HDFS進(jìn)行增刪改查操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服的詳細(xì)代碼
這篇文章主要介紹了Spring?Boot自定義?Starter并推送到遠(yuǎn)端公服,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09Java?JVM虛擬機(jī)調(diào)優(yōu)詳解
JVM是JavaVirtualMachine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的,本文主要介紹了jvm調(diào)優(yōu),感興趣的小伙伴們可以參考一下<BR>2022-07-07springAOP完整實(shí)現(xiàn)過(guò)程
當(dāng)你調(diào)用SimpleService類的doSomething方法時(shí),上述的PerformanceAspect會(huì)自動(dòng)攔截此調(diào)用,并且記錄該方法的執(zhí)行時(shí)間,這樣你就完成了一個(gè)針對(duì)Spring的AOP入門級(jí)案例,感興趣的朋友一起看看吧2024-02-02