程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring加載properties文件的辦法

Spring加載properties文件的辦法

編輯:關於JAVA

Spring加載properties文件的辦法。本站提示廣大學習愛好者:(Spring加載properties文件的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Spring加載properties文件的辦法正文


在項目中假如有些參數常常須要修正,或許前期能夠須要修正,那我們最好把這些參數放到properties文件中,源代碼中讀取properties外面的設置裝備擺設,如許前期只須要修改properties文件便可,不須要修正源代碼,如許加倍便利。在Spring中也能夠這麼做,並且Spring有兩種加載properties文件的方法:基於xml方法和基於注解方法。

上面分離評論辯論下這兩種方法。
1. 經由過程xml方法加載properties文件
        我們以Spring實例化dataSource為例,我們普通會在beans.xml文件中停止以下設置裝備擺設:

 <!-- com.mchange.v2.c3p0.ComboPooledDataSource類在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 --> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
 <property name="driverClass" value="com.mysql.jdbc.Driver" /> 
 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/shop" /> 
 <property name="user" value="root" /> 
 <property name="password" value="root" /> 
</bean> 

        如今假如我們要轉變dataSource,我們就得修正這些源代碼,然則我們假如應用properties文件的話,只須要修正那邊面的便可,就不論源代碼的器械了。那末若何做呢?
        Spring中有個<context:property-placeholder location=""/>標簽,可以用來加載properties設置裝備擺設文件,location是設置裝備擺設文件的途徑,我們如今在工程目次的src下新建一個conn.properties文件,外面寫上下面dataSource的設置裝備擺設:

dataSource=com.mchange.v2.c3p0.ComboPooledDataSource 
driverClass=com.mysql.jdbc.Driver 
jdbcUrl=jdbc\:mysql\://localhost\:3306/shop 
user=root 
password=root 

        如今只須要在beans.xml中做以下修正便可:

<context:property-placeholder location="classpath:conn.properties"/><!-- 加載設置裝備擺設文件 --> 
 
<!-- com.mchange.v2.c3p0.ComboPooledDataSource類在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 --> 
 <bean id="dataSource" class="${dataSource}"> <!-- 這些設置裝備擺設Spring在啟動時會去conn.properties中找 --> 
 <property name="driverClass" value="${driverClass}" /> 
 <property name="jdbcUrl" value="${jdbcUrl}" /> 
 <property name="user" value="${user}" /> 
 <property name="password" value="${password}" /> 
 </bean> 

        <context:property-placeholder location=""/>標簽也能夠用上面的<bean>標簽來取代,<bean>標簽我們加倍熟習,可讀性更強:

<!-- 與下面的設置裝備擺設等價,上面的更輕易懂得 --> 
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
 <property name="locations"> <!-- PropertyPlaceholderConfigurer類中有個locations屬性,吸收的是一個數組,即我們可以鄙人面配很多多少個properties文件 --> 
  <array> 
   <value>classpath:conn.properties</value> 
  </array> 
 </property> 
</bean> 

        固然看起來沒有下面的<context:property-placeholder location=""/>簡練,然則加倍清楚,建議應用前面的這類。然則這個只限於xml的方法,即在beans.xml頂用${key}獲得設置裝備擺設文件中的值value。
2. 經由過程注解方法加載properties文件
        還有一種就是經由過程注解的方法,在java代碼中應用@Value注解來加載設置裝備擺設文件中的值。
        我們來看一個例子:假設我們要在法式中獲得某個文件的相對途徑,我們很天然會想到不克不及在法式中寫逝世,那末我們也能夠卸載properties文件中。照樣在src目次下新建一個public.properties文件,假定外面寫了一筆記錄:
filePath=E\:\\web\\apache-tomcat-8.0.26\\webapps\\E_shop\\image  
        假如想在java代碼中經由過程注解來獲得這個filePath的話,起首得在beans.xml文件中設置裝備擺設一下注解的方法:

<!-- 第二種方法是應用注解的方法注入,重要用在java代碼中應用注解注入properties文件中響應的value值 --> 
<bean id="prop" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
 <property name="locations"><!-- 這裡是PropertiesFactoryBean類,它也有個locations屬性,也是吸收一個數組,跟下面一樣 
  <array> 
   <value>classpath:public.properties</value> 
  </array> 
 </property> 
</bean> 

        如今我們可以在java代碼中應用注解來獲得filePath的值了:

@Component("fileUpload") 
public class FileUploadUtil implements FileUpload { 
  
 private String filePath; 
 @Value("#{prop.filePath}") 
 //@Value表現去beans.xml文件中找id="prop"的bean,它是經由過程注解的方法讀取properties設置裝備擺設文件的,然後去響應的設置裝備擺設文件中讀取key=filePath的對應的value值 
 public void setFilePath(String filePath) { 
  System.out.println(filePath); 
  this.filePath = filePath; 
 } 

        留意要有set辦法能力被注入出去,注解寫在set辦法上便可。在setFilePath辦法中經由過程掌握台打印filePath是為了在啟動tomcat的時刻,不雅察掌握台有無輸入來,假如有,解釋Spring在啟動時,曾經將filePath給加載好了,我們看一下掌握台的啟動信息:

以上就是Spring加載properties設置裝備擺設文件的兩種方法。現實上,下面基於xml方法中的PropertyPlaceholderConfigurer類和這裡基於注解方法的PropertiesFactoryBean類都是繼續PropertiesLoaderSupport,都是用來加載properties設置裝備擺設文件的。

原文地址:http://blog.csdn.net/eson_15/article/details/51365707

若有纰謬的處所請年夜家原諒,感謝年夜家的浏覽。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved