您好,登錄后才能下訂單哦!
這篇文章跟大家分析一下“springboot yml配置文件值的注入方式是什么”。內(nèi)容詳細(xì)易懂,對“springboot yml配置文件值的注入方式是什么”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠?qū)Υ蠹矣兴鶐椭O旅娓【幰黄鹕钊雽W(xué)習(xí)“springboot yml配置文件值的注入方式是什么”的知識吧。
參考 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>
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; } }
1.將application.properties文件后綴改為.yml,內(nèi)容為:
server: port: 8080 person: name: 小狗 age: 21
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); } }
結(jié)果:
在springboot中,如果需要使用到配置文件中的數(shù)據(jù),自動注入即可,非常方便,但是在使用yml中的屬性時,自動注入?yún)s失效了? 發(fā)現(xiàn),如果是properties文件,直接注入即可,但是yml需要增加一個配置
yml文件相對于properties較整潔和簡便,在自動注入的使用需要增加配置
增加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個注解即可 */ @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; }
說明:
@PropertySource(value = "classpath:application-quartz.yml", factory = YamlPropertyLoaderFactory.class)
這個注解表示注入哪個配置文件,指定第二步中的配置類
@ConfigurationProperties(prefix = "quartz")
表示指定配置文件中的屬性是什么前綴,可忽略,例如:quartz.articleCarwler=0 0/5 * * * ?
properties類型的配置文件就比較簡單,不需要增加上面的依賴和配置,直接指定注入即可
直接注入屬性到class
@Configuration @PropertySource("classpath:/application.properties") @ConfigurationProperties(prefix = "quartz") public class JobTime { private String task1; private String task2; }
說明:
@PropertySource("classpath:/application.properties")
指定配置文件名稱
@ConfigurationProperties(prefix = "quartz")
指定配置文件中的key的前綴,可忽略此注解, 例如:quartz.task1=0 3 * * * ?
如果是在代碼中使用單獨(dú)的屬性,不需要將屬性都注入到class中,那么可直接使用注解注入到變量中,在代碼中直接使用
無論是yml還是properties都可以直接注入,不需要其他配置
使用注解:@Value("${key}") 就可以直接注入。
例如:
@Value("${quartz.taks1}") private String taks1;
springboot一種全新的編程規(guī)范,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,SpringBoot也是一個服務(wù)于框架的框架,服務(wù)范圍是簡化配置文件。
關(guān)于springboot yml配置文件值的注入方式是什么就分享到這里啦,希望上述內(nèi)容能夠讓大家有所提升。如果想要學(xué)習(xí)更多知識,請大家多多留意小編的更新。謝謝大家關(guān)注一下億速云網(wǎng)站!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。