在spring中讀取properties配置檔案裡面的資訊
properties檔案的讀取與配置
一般我們在建立專案的時候會把一些經常用到和經常變動的資訊寫到配置檔案裡,以便於以後跨平臺和移植只需要修改配置檔案,不用修改專案程式碼,這樣起到 可很好的解耦合作用。那麼,我們spring mvc 是如何讀取配置檔案的呢?
一般是這樣的順序:
新建properties-->配置檔案讀取-->Controller依賴注入,放入Session-->前端頁面el表示式取到,訪問
1、新建:
report.properties裡面存放著固定的報表連線地址
例如:report.url=http://192.168.1.1/reportJsp/showReport.jsp?raq=zjzcjdb.raq2、讀取properties檔案:
在applicationContext.xml,總的配置檔案裡面,定義一個專門讀取properties檔案的類,啟動專案時自動載入資訊
<!-- 用來解析Java Properties屬性檔案值(注意class指定的類)--> <bean id="placeholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:report.properties</value> </list> </property> </bean>
把properties裡面的資訊讀進來:
<bean id="report" class="java.lang.String">
<constructor-arg value="${report.url}"/>
</bean>
3、Controller中注入
@Autowired
private String report;
這樣report就可以在Controller裡面使用了,例如我們把它加入到Session裡面,隨時帶著以便於用的時候取出
session.setAttribute("reportUrl", report);
4、我們用到這個properties資訊的時候在前端是如何取得?
點選事件
<a onclick="javascript:window.open('${reportUrl}')" type="button" class="btn btn-success btn-sm">生成報表</a>
這樣我們就可以訪問這個連結了,如果連結資訊改變的話,只需要修改properties檔案裡面的url資訊就好。
要是連結後面需要跟引數的話:
<a onclick="javascript:window.open('${reportUrl}&year=2015')" type="button" class="btn btn-success btn-sm">
生成報表</a>
下面用兩個例子在進一步說明與理解
例1:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
<!--要是有多個配置檔案,只需在這裡繼續新增即可 -->
</list>
</property>
</bean>
這裡為什麼用locations(還有一個location)
是因為。一般來說。我們的專案裡面。配置檔案可能存在多個。
就算是隻有一個。那將來新新增的話。只需在下面再加一個value標籤即可。
而不必再重新改動太多。(當然。效能上是否有影響,這個以當前這種伺服器的配置來說。是基科可以忽略不計的)。
然後我們就可以在jdbc.properties檔案中填寫具體的配置資訊了。
<!-- 配置C3P0資料來源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="user">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
jdbc.properties檔案寫的資訊。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
例2:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>file:/data/pc-config/passport.properties</value>
<value>classpath:memcached.properties</value>
</list>
</property>
</bean>
classpath:是指的當前類檔案的目錄下。
file:在window下是指的當前分割槽(比如你的專案是放在d盤,則是在d:/data/pc-config/passport.properties)
在linux下,則是當前路徑下的檔案/data/pc-config/passport.properties