在applicationContext.xml文件中,使用 ${xxx} 表示的是:調用某個變量,該變量的名稱就是{xxx}里面的"xxx"。
-
<!-- 配置數據鏈接池 --> <propertyname="dataSource"> <beanclass="com.mchange.v2.c3p0.ComboPooledDataSource"> <propertyname="jdbcUrl"value="${jdbcUrl}"></property> <propertyname="driverClass"value="${driverClass}"></property> <propertyname="user"value="${user}"></property> <propertyname="password"value="${password}"></property> <!-- 其它配置 --> <!-- 初始化時獲取三個連接,取值應在minPoolSize與maxPoolSize之間。Default:3 --> <propertyname="initialPoolSize"value="3"></property> <!-- 連接池中保留的最小連接數。Default:3 --> <propertyname="minPoolSize"value="3"></property> <!-- 連接池中保留的最大連接數。Default:15 --> <propertyname="maxPoolSize"value="15"></property> <!-- 當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default:3 --> <propertyname="acquireIncrement"value="3"></property> <!-- 控制數據源內加載preparedStatement數量.如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default:0 --> <propertyname="maxStatements"value="8"></property> <!-- maxStatementsPerConnection 定義了連接池內單個連接所擁有的最大緩存statements數。Default:0 --> <propertyname="maxStatementsPerConnection"value="5"></property> <!-- 最大空閑時間,1800秒內未使用則連接被丟棄。若為0則永不丟棄。Default:0 --> <propertyname="maxIdleTime"value="1800"></property> </bean> </property>
-
jdbcUrl=jdbc:mysql://localhost:3306/oa driverClass=com.mysql.jdbc.Driver user=root password=
-------2016-10-11 更新---
那么該如何引入properties文件呢?在哪里進行引入?
一般情況下,如果你只有一個applicationContext.xml配置文件而已的話,那么只需要在applicationContext.xml文件中添加一行:
<!-- 導入外部的properties文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<context:property-placeholder location="屬性文件,多個之間逗號分隔" file-encoding="文件編碼" ignore-resource-not-found="是否忽略找不到的屬性文件" ignore-unresolvable="是否忽略解析不到的屬性,如果不忽略,找不到將拋出異常" properties-ref="本地Properties配置" local-override="是否本地覆蓋模式,即如果true,那么properties-ref的屬性將覆蓋location加載的屬性,否則相反" system-properties-mode="系統屬性模式,默認ENVIRONMENT(表示先找ENVIRONMENT,再找properties-ref/location的),NEVER:表示永遠不用ENVIRONMENT的,OVERRIDE類似於ENVIRONMENT" order="順序"
/>
location:表示屬性文件位置,多個之間通過如逗號/分號等分隔;
file-encoding:文件編碼;
ignore-resource-not-found:如果屬性文件找不到,是否忽略,默認false,即不忽略,找不到將拋出異常
ignore-unresolvable:是否忽略解析不到的屬性,如果不忽略,找不到將拋出異常
properties-ref:本地java.util.Properties配置
local-override:是否本地覆蓋模式,即如果true,那么properties-ref的屬性將覆蓋location加載的屬性
system-properties-mode:系統屬性模式,ENVIRONMENT(默認),NEVER,OVERRIDE
ENVIRONMENT:將使用Spring 3.1提供的PropertySourcesPlaceholderConfigurer,其他情況使用Spring 3.1之前的PropertyPlaceholderConfigurer
如果是本地覆蓋模式:那么查找順序是:properties-ref、location、environment,否則正好反過來;
OVERRIDE: PropertyPlaceholderConfigurer使用,因為在spring 3.1之前版本是沒有Enviroment的,所以OVERRIDE是spring 3.1之前版本的Environment
如果是本地覆蓋模式:那么查找順序是:properties-ref、location、System.getProperty(),System.getenv(),否則正好反過來;
NEVER:只查找properties-ref、location;
order:當配置多個<context:property-placeholder/>時的查找順序,關於順序問題請參考:http://www.iteye.com/topic/1131688
具體使用請參考如下文件中的如dataSource:
https://github.com/zhangkaitao/es/blob/master/web/src/main/resources/spring-config.xml