Spring?Boot中使用@Value加載配置的方法
@Value
注解相信很多Spring Boot的開發(fā)者都已經(jīng)有接觸了,通過使用該注解,我們可以快速的把配置信息加載到Spring的Bean中。
比如下面這樣,就可以輕松的把配置文件中key為com.didispace.title
配置信息加載到TestService中來使用
@Service public class TestService { @Value("${com.didispace.title}") private String title; }
這個注解可以說非常的好用!但是為什么不推薦大家使用它呢?核心原因是:當我們使用@Value
來直接提取配置信息使用的時候,會產(chǎn)生配置信息加載的碎片化。比如,同一個配置,可能背多個Service或者Controller使用,當我們再要修改它的時候,就會存在一個遺漏的風險。我們無法方便的維護這些配置加載而導致一些問題。
那么,如果不使用@Value
,我們應該用什么來替代呢?
我比較推薦的就是使用@ConfigurationProperties
來分類和加載各種配置信息,比如,我要加載關于com.didispace
的相關配置時候,就寫一個這樣的實現(xiàn):
@Configuration @ConfigurationProperties(prefix = "com.didispace") public class DidispaceProperties { private String title; }
這個DidispaceProperties
就會加載com.didispace
開頭的配置。其他Service或者Controller要使用這些配置的時候,就通過注入DidispaceProperties
就也可以了。如果要修改配置相關的邏輯,也只需要修改DidispaceProperties
中的內(nèi)容即可,而不是到處找@Value
的配置。
另外,在這里,其實還可以增加對配置的校驗,主要在pom.xml中引入spring-boot-starter-validation
模塊。然后修改配置類,增加@Validated
注解和具體校驗注解,比如:
@Validated @Configuration @ConfigurationProperties(prefix = "com.didispace") public class DidispaceProperties { @NotNull private String title; }
這就輕松實現(xiàn)配置的校驗了,是不是很方便呢?
到此這篇關于為什么不推薦在Spring Boot中使用@Value加載配置的文章就介紹到這了,更多相關Spring Boot使用@Value加載配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Springboot+Junit+Mockito做單元測試的示例
本篇文章主要介紹了基于Springboot+Junit+Mockito做單元測試的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02