applicationContext.xml中的使用${}是代表什么意思?
2015-05-22 21:25
531 查看
在applicationContext.xml文件中,使用 ${xxx} 表示的是:调用某个变量,该变量的名称就是{xxx}里面的"xxx"。
例如:在applicationContext.xml文件中配置数据连接池
代码中被标识的部分就是使用了${}的功能。它相当于Java中调用了变量名一样。
在本例子中,这些变量来自另外一个properties文件。该properties为: jdbc.properties(主要用来存放JDBC连接数据库的一些配置,方便下次修改,而不需要在applicationContext.xml文件中修改。)
jdbc.properties:
${jdbcUrl} 中的jdbcUrl 指的就是jdbc.properties中jdbcUrl。
-------2016-10-11 更新---
那么该如何引入properties文件呢?在哪里进行引入?
一般情况下,如果你只有一个applicationContext.xml配置文件而已的话,那么只需要在applicationContext.xml文件中添加一行:
其中:location属性是指该文件的位置。
如果是在src目录下的话,该位置为:classpath:文件名.后缀
如果是在/WEB-INF/目录下的话,该位置为: /WEB-INF/文件名.后缀。
但是要注意,不要放错位置了,<context:property-placeholder>不能发到<bean></bean>标签里面去。否则会报错;
说说:<context:property-placeholder/>的配置,内容好像是来自开涛博客,具体链接不知道了。
<context:property-placeholder/>配置如下:
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
例如:在applicationContext.xml文件中配置数据连接池
<!-- 配置数据链接池 --> <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:
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
相关文章推荐
- applicationContext.xml中的使用${}是代表什么意思?
- 使用 XHTML 的局限有哪些?如果页面使用 'application/xhtml+xml' 会有什么问题吗?
- Android中的Shape使用,了解一下Shape下面有哪些标签,都代表什么意思?
- java se 使用spring框架 解析ApplicationContext.xml的方式
- Spring中ClassPathXmlApplicationContext类的使用,以及与FileSystemXmlApplicationContext的区别
- spring使用AOP如何配置ApplicationContext.xml
- Hibernate的注释该如何使用?每一个注释代表什么意思?
- 使用 XHTML 的局限有哪些?如果页面使用 'application/xhtml+xml' 会有什么问题吗?
- XMLHttpRequest对象发送请求后,请求的状态有几个值,每个值代表什么意思?
- spring中ClassPathXmlApplication和FileSystemXmlApplicationContext使用区别
- spring applicationContext.xml 文件中<context:component-scan/>使用详解
- 使用 XHTML 的局限有哪些?如果页面使用 'application/xhtml+xml' 会有什么问题吗?
- stuts返回xml类型的日期时间,各节点代表什么意思,并将xml格式时间转换成string类型的日期时间
- 使用Spring中的ClassPathXmlApplicationContext加载配置文件
- 使用 XHTML 的局限有哪些?如果页面使用 'application/xhtml+xml' 会有什么问题吗?
- quartz 中 使用 applicationContext.xml中的bean 得到 hiberante的Session
- 【SpringMVC之配置文件(一)】spring 里面的ApplicationContext.xml 和 xxx-servlet.xml分别的作用是什么?
- java spring配置文件applicationcontext.xml的使用
- 【SpringMVC之配置文件(一)】spring 里面的ApplicationContext.xml 和 xxx-servlet.xml分别的作用是什么?
- 使用 XHTML 的局限有哪些?如果页面使用 'application/xhtml+xml' 会有什么问题吗?