1. 程式人生 > >Spring如何載入properties檔案解析

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.user=root

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>

現在在java程式碼中獲取此路徑(我的是在service實現類裡面會有@Service,如果不是可以新增@Component):

@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方法。