個人感悟:
spring boot主配置文件為application.yml、application.yaml、application.xml 這三個擴散名一人比一個優先級高。即xml文件中配置同一屬性的值,會覆蓋前邊屬性的值。
其實很多java類或接口,字段與這些主配置文件中屬性是 綁定的。
當我們自己創建類,也想放到容器中,可以單獨建立文件,可以通過@PropertySource與@ImportResource這兩個注解來注入到Servlet容器中。
前者適合yml、yaml格式,而@importResource則適用於xml文件格式,如beans.xml 可以把其注解到窗口中,不過要放在spring boot主配置文件頭部
@PropertySource 自定義配置文件名稱,用於spring boot 配置文件(yml或properties)與實體屬性映射。
引入說明
在從配置文件里獲取值,與JavaBean做映射。存在一個問題,我們是從主配置(application.yml)里讀取的。如果全部的配置都寫到application里,那么主配置就會顯得特別臃腫。為了按照不同模塊自定義不同的配置文件引入了@PropertySource
配置
主配置文件 application.yml
person.properties person.lastName=李四 person.age=25 person.birth=2017/12/15 person.boss=true person.maps.key1=value1 person.maps.key2=value2 person.lists=a,b,c person.dog.name=dog person.dog.age=2
JavaBean --> Person.java
@PropertySource(value = {"classpath:person.properties"}) @ConfigurationProperties(prefix = "person") @Component public class Person { private String lastName; private Integer age; private boolean isBoss; private Date birth; private Map<String, Object> maps; private List<Object> lists; private Dog dog; ...setter/getter/toString... }
這樣一個注解(@PropertySource(value = {“classpath:person.properties”}))就可以搞定不在主配置里讀取,按照不同的功能模塊划分出不同的配置文件。
@ImportResource
一般情況下我們自定義的xml配置文件,默認情況下這個bean是不會加載到Spring容器中來的。需要@ImportResource注解將這個配置文件加載進來。
配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="helloService" class="com.chentongwei.springboot.service.HelloService"></bean> </beans>
JavaBean
public class HelloService { }
修改啟動類@SpringBootApplication
@ImportResource(locations = {"classpath:beans.xml"}) public class Springboot02ConfigApplication { public static void main(String[] args) { SpringApplication.run(Springboot02ConfigApplication.class, args); } }
小結
@PropertySource
@PropertySource 用於引入*.Properties或者 .yml 用於給javabean實體類注入值
@Component @ConfigurationProperties(prefix="bird2") //需要與@Component 配合使用,沒有使用@PropertySource()則指向全局配置文件application.yml或application.properties
//只能指向.properties文件,不可以指向.yml文件 沒有此文件則指向主配置文件 @PropertySource(value={"classpath:entity/pigean.properties"},ignoreResourceNotFound=false,encoding="UTF-8")
@ImportResource 用於引入.xml 類型的配置文件 在spring boot中已經被配置類替代,且要求放在配置啟動類上
@ImportResource一般用於啟動類上
————————————————
版權聲明:本文為CSDN博主「zzh_spring」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zzh_spring/article/details/89331957