? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 原創(chuàng)者:文思
上集講解了入門,這集講一講學(xué)習(xí)與實際應(yīng)用中容易出現(xiàn)的坑。
1推姻、版本之坑:
test=1無法綁定影射到private int test中窃款,ignoreUnknownFields = false在有屬性不能匹配到聲明的域的時候拋出異常.
單獨使用并注入配置類進(jìn)行調(diào)用:
@EnableConfigurationProperties注解课兄。 這個注解告訴Spring Boot 使能支持@ConfigurationPropertie。但是
Spring boot1.5以上在spring boot(版本1.5.1.RELEASE)項目中晨继,當(dāng)準(zhǔn)備映射自定義的配置文件屬性到類中的時候烟阐,發(fā)現(xiàn)原本的@ConfigurationProperties注解已將location屬性移除,因此導(dǎo)致無法正常給配置類的屬性賦值
用的1.5.4版本,所以用location這里報錯了
為何去除:
spring boot認(rèn)為將一在配置類中采用@Component的方式注冊為組件紊扬,然后使用@PropertySource來指定自定義的資源目錄個配置類綁定到一個配置文件是一件不好的事蜒茄,避免一個重要的配置文件有多處修改入口,保持入口一致性餐屎。
解決方法:
在配置類中采用@Component的方式注冊為組件檀葛,然后使用@PropertySource來指定自定義的資源目錄
這就是@ConfigurationProperties的location屬性被取消后的一種替代方案,如果TestPropertiesNow還取不到我也沒辦法了腹缩。
spring boot 1.5版本后使用@Value注解注入屬性屿聋,以讀取郵件配置文件并發(fā)送為例:
實例:
-----------------------------------------------------------------------------------------------------------------------------------------------------
2:覆蓋約定
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3:maven依賴
3.1、繼承 spring-boot-starter-parent:
spring-boot-starter-parent project
默認(rèn)是 Java 1.6藏鹊。 Resource filtering润讥。exec plugin、surefire伙判、Git commit ID象对、shade。
Resource filtering for application.properties 和 application.yml宴抚,以及,profile-specific file甫煞,如application-foo.properties 或 application-foo.yml菇曲。
想使用不同版本的JDK:
3.2、不繼承 spring-boot-starter-parent:
這種情況下抚吠,仍然可以使用dependency management常潮,但不能使用plugin management啦。方式如下:
注意楷力,scope是import喊式。而且,這種情況下萧朝,不再允許在覆蓋相應(yīng)的版本岔留。如果要使用其他版本,需要在上面的前面添加一個完整的dependency检柬。如下: