如何替换Application context定义文件中自定义的property

原创 2004年08月10日 18:08:00

如何替换Application context定义文件中自定义的property

问题描述:

Application context定义文件(如xxx-servlet.xmlapplicationContext.xml)中,有时需要一些自定义的property,如datasource的定义

       <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

              <property name="driverClassName"><value>${jdbc.driverClassName}</value></property>

              <property name="url"><value>${jdbc.url}</value></property>

              <property name="username"><value>${jdbc.username}</value></property>

              <property name="password"><value>${jdbc.password}</value></property>

       </bean>

或者可能有时还需要Application的根路径或系统变量。

解决方案:

       使用org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer

这个类的设计意图就是为了解决这个问题。它首先使用用户自定义的变量,然后使用系统变量,然后是这个配置文件的变量。

具体用法:

1.         在配置文件中声明这个类
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

2.         设定参数(可以为空)

l         location:指定一个properties文件的路径
<property name="location"><value>/WEB-INF/jdbc.properties</value></property>

l         locations:指定一组properties文件的路径
<property name=" locations ">
    <list>
        <value>/WEB-INF/jdbc.properties</value>
        <value>/WEB-INF/classes/messages.properties</value>   
   </list> 
</property>

如果需要Application跟路径,则需要定义Application的根路径,具体步骤如下:

1.         web.xml中,添加

       <context-param>

              <param-name>webAppRootKey</param-name>

              <param-value>petclinic.root</param-value>

       </context-param>

设置跟路径名称(默认为webapp.root

2.         然后声明WebAppRootListener or Log4jConfigListener

       <listener>

              <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

       </listener>

ContextLoaderServlet

       <servlet>

              <servlet-name>context</servlet-name>

              <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>

              <load-on-startup>1</load-on-startup>

       </servlet>

如果是上边的声明,则Application的根路径变量的写法是${ petclinic.root }

spring 不同 配置文件中的占位符 无法获取 使用 context:property-placeholder

这个在spring中配置文件中是非常常用的。 context:property-placeholder大大的方便了我们数据库的配置。 只需要在spring的配置文件里添加一句:context...
  • z69183787
  • z69183787
  • 2016年12月01日 16:39
  • 1014

Spring context架构--静态结构

概念Context也就是我们常说的spring容器,打个比方,context就像是一家公司,beans则是公司的工厂,除了工厂,公司还有翻译,仓库以及办公场所等等。下面就看看context的主要构成部...
  • szwandcj
  • szwandcj
  • 2016年03月01日 23:52
  • 5480

idea配置application context(web项目的默认访问路径)

idea的application context  eclipse大家应该都用过,eclipse访问项目的路径一般是localhost:8080/projectName, 当把IDE换成idea以后,...
  • qq_36666651
  • qq_36666651
  • 2017年11月11日 23:05
  • 1058

面试知识点1:Tomcat+Spring中有几个ApplicationContext?它们的关系是什么样的?

Tomcat+Spring下,Context的关系?
  • RoxLiu
  • RoxLiu
  • 2014年03月14日 15:45
  • 3171

从Instant run谈Android替换Application和动态加载机制

背景 Android studio 2.0 Stable版本中集成了Install run即时编译技术,官方描述可以大幅加速编译速度,我们团队在第一时间更新并使用,总体用下来感觉,恩…也就那样吧...
  • MYBOYER
  • MYBOYER
  • 2016年12月20日 15:06
  • 819

Android深入理解Context(一)Context关联类和Application Context创建过程

Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它。...
  • itachi85
  • itachi85
  • 2017年06月01日 00:32
  • 2212

Idea中找不到Java Application 的xml配置文件问题研究

Idea中找不到Java Application 的xml配置文件问题研究   问题: 在用Idea建立一个Java Application工程的时候,应用了Spring框架,可是S...
  • xyw591238
  • xyw591238
  • 2016年06月21日 08:27
  • 5042

使用gradle的自定义Property实现Android项目的配置和依赖统一管理

gradle支持自定义property,在GoogleSamples中官方用了Ext(ra) Properties方式来定义了Android的配置文件和统一的依赖管理,这种方式也称动态属性,我们必须使...
  • lj402159806
  • lj402159806
  • 2017年02月08日 21:57
  • 629

Maven 部署webapp 到远程服务器

tomcat8 和tomcat6 部署有很大区别。在按照《Maven实战》这本书配置时(tomcat6),发现错误信息提示是部署到本地的tomcat。 在网上查看了官方文档,没有找到相关demo 。...
  • ZhangVeni
  • ZhangVeni
  • 2016年05月24日 14:54
  • 2196

Android Context完全解析,你所不知道的Context的各种细节

Context相信所有的Android开发人员基本上每天都在接触,因为它太常见了。但是这并不代表Context没有什么东西好讲的,实际上Context有太多小的细节并不被大家所关注,那么今天我们就来学...
  • sinyu890807
  • sinyu890807
  • 2015年11月09日 09:14
  • 96261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何替换Application context定义文件中自定义的property
举报原因:
原因补充:

(最多只允许输入30个字)