今天和大家分享一下Spring讀取配置檔案的三種方式,第一種就是Environment,第二種就是佔位符,第三種就是SpEL(Spring Express Language)。無論哪一種方式都要先設定資料來源再進行讀取。在工作當中用的最多的應該是佔位符,不過其他兩種也有自己的特點。下面一起來看一下吧。
我們進行的講解是以Spring的5.0.2.RELEASE版本基礎的哦。
第一種:Environment讀取配置檔案經過本人實驗這種方式只能針對java配置的方式有效,xml指定資料來源後Environment無法讀取配置項。指定完資料來源後向需要配置項的bean注入Environment物件,再通過Environment物件的方法進行讀取。
首先,指定資料來源。使用PropertySource註解指定資料來源:
@Configuration@ComponentScan@PropertySource("classpath:app.properties")public class EnvironmentStyleConfig {...}
其次,注入Environment物件。向所需配置項的bean中注入Environment物件:
@AutowiredEnvironment env;
最後,讀取配置。通過env物件的方法來讀取配置項,其方法如下:
1.env.getProperty("name");獲取String型別
2.env.getRequiredProperty("name");獲取String型別而且不能為空,為空則報錯
3.env.getProperty("fistname", "無名");獲取String型別,如果為空則附一個預設值
4.env.getProperty("age", Integer.class);獲取指定型別的值
5.env.getProperty("myage", Integer.class, 0);獲取指定型別的值,如果為空則設定一個預設值
第二種:使用佔位符首先,指定資料來源。分為兩種,一種是java配置來指定,一種是xml來指定,分別如下:
Java配置指定資料來源:
@Configuration@ComponentScan@PropertySource("classpath:app.properties")public class PlaceholderStyleConfig {...}
請注意哦小夥伴,這裡Spring的版本是5.0.2.RELEASE,如果是4.0.7.RELEASE的話還需要配置PropertySourcesPlaceholderConfigurer,在自己的專案裡要確認這一點哦。
@Configuration@ComponentScan@PropertySource("classpath:app.properties")public class PlaceholderStyleConfig { @Bean public PropertySourcesPlaceholderConfigurer placeholder() { return new PropertySourcesPlaceholderConfigurer(); }}
Xml配置指定資料來源:
<context:property-placeholder location="app.properties"/>
其次,通過Value註解和$來讀取值。這裡分java注入和xml配置兩種,如下:
java注入時取值:
@Value("${name}")private String name;
Xml配置時取值:
<bean> <property name="name" value="${name}"></property></bean>第三種:使用SpEL
首先指定資料來源
@Configuration@ComponentScan@PropertySource("classpath:app.properties")public class SpELStyleConfig {...}
然後通過Value註解和#符從environment物件中讀取
@Value("#{environment['height']}")public String height;
和大家說一下,SpEL功能有很多,這裡只是介紹他如何讀取配置檔案的配置項。如果有興趣了解SpEL的話,小夥伴們可以查閱一下其他文件。