applicationContext.xml中的使用${}是代表什么意思?


在applicationContext.xml文件中,使用 ${xxx} 表示的是:調用某個變量,該變量的名稱就是{xxx}里面的"xxx"。

 
例如:在applicationContext.xml文件中配置數據連接池
  1. <!-- 配置數據鏈接池 -->
    <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>

     

代碼中被標識的部分就是使用了${}的功能。它相當於Java中調用了變量名一樣。
在本例子中,這些變量來自另外一個properties文件。該properties為: jdbc.properties(主要用來存放JDBC連接數據庫的一些配置,方便下次修改,而不需要在applicationContext.xml文件中修改。)
jdbc.properties:
  1. jdbcUrl=jdbc:mysql://localhost:3306/oa
    driverClass=com.mysql.jdbc.Driver
    user=root
    password=

     

${jdbcUrl} 中的jdbcUrl 指的就是jdbc.properties中jdbcUrl。


-------2016-10-11 更新---

那么該如何引入properties文件呢?在哪里進行引入?

一般情況下,如果你只有一個applicationContext.xml配置文件而已的話,那么只需要在applicationContext.xml文件中添加一行:

<!-- 導入外部的properties文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>  
其中:location屬性是指該文件的位置。
如果是在src目錄下的話,該位置為:classpath:文件名.后綴
如果是在/WEB-INF/目錄下的話,該位置為: /WEB-INF/文件名.后綴。
但是要注意,不要放錯位置了,<context:property-placeholder>不能發到<bean></bean>標簽里面去。否則會報錯;
 
說說:<context:property-placeholder/>的配置,內容好像是來自開濤博客,具體鏈接不知道了。
<context:property-placeholder/>配置如下:
<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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM