Spring如何載入properties檔案解析
在專案中如果有些引數經常需要修改,或者後期可能需要修改,那我們最好把這些引數放到properties檔案中,原始碼中讀取properties裡面的配置,這樣後期只需要改動properties檔案即可,不需要修改原始碼,這樣更加方便。在Spring中也可以這麼做,而且Spring有兩種載入properties檔案的方式:基於xml方式和基於註解方式。下面分別討論下這兩種方式。
1. 通過xml方式載入properties檔案
在spring-config.xml核心檔案中新增如下,有的也叫applicationContext.xml。
<!-- 資料來源配置 -->
<context:property-placeholder location="classpath:jdbc.properties,classpath:redis.properties" />
我這裡有兩個配置檔案jdbc.properties和redis.properties兩個檔案,
jdbc.properties內容如下:
#jdbc.driverName=com.mysql.jdbc.Driver
jdbc.driverName=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
jdbc.dbType=mysql
jdbc.url=jdbc:mysql://192.168.8.60:3306/user?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
jdbc.pwd=123456
jdbc.testSql=SELECT 'x' FROM DUAL
這裡只說明jdbc.properties的配置方式
<!--
資料來源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.pwd}" />
<property name="initialSize" value="0" />
<property name="maxActive" value="20" />
<property name="minIdle" value="2" />
<property name="maxWait" value="30000" />
<property name="validationQuery" value="${jdbc.testSql}" />
</bean>
2. 通過註解方式載入properties檔案(在程式碼中推薦第二種)
還有一種就是通過註解的方式,在java程式碼中使用@Value註解來載入配置檔案中的值。
我們來看一個例子:假如我們要在程式中獲取某個檔案的絕對路徑,我們很自然會想到不能在程式中寫死,那麼我們也可以寫在properties檔案中。還是在resources目錄下新建一個public.properties檔案,假設裡面寫了多條記錄:
#solr伺服器訪問路徑(以後很有可能有多可solrcore)
SOLR_URL=http://localhost:8888/solr/solr_core/
#增量更新引數dataimport固定不變 command=delta-import表示增量從mysql更新資料到solr command=full-import表示全量從mysql更新資料到solr
#entity=document表示要更新的entity的name,但是注意此名稱非java中實體類的名稱,而是solr_core中data-config.xml中的name
#clean=false 表示增量不清空solr中資料 true表示清空資料 但是全量更新是true
#commit=true 提交必須是true
SOLR_PARAM=/dataimport?command=delta-import&entity=document&clean=false&commit=true
如果想在java程式碼中獲取此路徑,在spring-config.xml核心檔案中新增如下:
<!-- 使用註解的方式注入,主要用在java程式碼中使用註解注入properties檔案中相應的value值 -->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<value>classpath*:/comm.properties</value>
</list>
</property>
</bean>
@Value("#{configProperties['SOLR_URL']}")
private String solr_url;
@Value("#{configProperties['SOLR_PARAM']}")
private String solr_param;
public String getSolr_url() {
return solr_url;
}
public void setSolr_url(String solr_url) {
this.solr_url = solr_url;
}
public String getSolr_param() {
return solr_param;
}
public void setSolr_param(String solr_param) {
this.solr_param = solr_param;
}
注意:一定要加上get/set方法。