`

<context:property-placeholder/>元素 location属性值笔记

 
阅读更多
前言
一般的spring框架都是用在web项目中,xml中的properties文件的配置一般都是classpath:db.properties的格式。但在非web项目中,需要将这些db.propperties文件独立放在一个conf文件夹中,那么就无法使用classpath:这种格式了。最近在部署一个项目中遇到经常会修改properties文件中配置属性的值,因此将部署包中的属性配置文件都提到一个固定目录,由于项目Spring的配置文件采用<context:property-placeholder/>元素引用这些properties配置文件,因此对 location属性的支持的文件位置做一下记录。

location属性值
1. location属性值classpath 与 classpath*
   如:
 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
  <property name="mapperLocations" value="classpath*:mapper/**/*Mapper.xml"></property>
 </bean>
 <context:property-placeholder location="classpath:/jdbc.properties" />

  .classpath可以加载整个classpath下,包括jar包里面的资源文件。
  .classpath只会返回第一个匹配的资源,查找路径是优先在项目中存在资源文件,再查找jar包。
  .资源文件名可包含通配符(如spring-*.xml,spring*.xml),如果根目录为"", 则classpath加载不到任何资源而classpath*则可以加载到classpath中可以匹配的目录中的资源,但是不能加载到jar包中的资源
2. location属性值file协议绝对路径
 
<property name="locations"  value="file:c/tomcat8/conf/db.properties" />


3.locationfile协议属性值环境变量
 <property name="locations"  value="file:#{systemProperties['jdbc.properties']}" />


<bean id="configBean"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>file:${config.dir}/conf/db.properties</value>
		</property>
	</bean>

file后面的参数config.dir java的环境变量,可以在java -Dconfig.dir=c:/tomcat8来指定
结论
这样做的好处就是可以将一个jar包做成产品化的形式,否则配置文件放在jar包中,每次修改配置都需要重新修改jar包。 
分享到:
评论

相关推荐

    context:property-placeholder 和util:properties

    context:property-placeholder 和util:properties 博客:https://blog.csdn.net/u010476739/article/details/76735527

    Spring整合Mybatis使用&lt;context:property-placeholder&gt;时的坑

    通过上述调整,你应该能够解决Spring在整合Mybatis时,使用`&lt;context:property-placeholder&gt;`时遇到的属性解析问题,确保每个数据源都能正确地从属性文件中获取其配置信息。记得在调整配置后,重新启动应用并检查...

    SSH笔记-通过property-placeholder使用外部属性文件

    在Spring框架中,`&lt;context:property-placeholder&gt;`是用于加载和解析属性文件的一个标签,它允许我们在XML配置或Java配置中使用占位符 `${...}` 来引用属性文件中的值。这样做的好处是,我们可以将敏感信息如数据库...

    集成springmvc spring hibernate的配置

    &lt;context:property-placeholder location="classpath:jdbc.properties"/&gt; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt; &lt;property name="driverClassName" ...

    struts2.3+hibernate3.6+spring3.1整合的纯xml配置的小项目

    &lt;context:property-placeholder location="classpath:jdbc.properties" /&gt; &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt; &lt;property name...

    引入多个properties时.txt

    &lt;context:property-placeholder location="classpath:jdbc.properties" prefix="jdbc."/&gt; &lt;context:property-placeholder location="classpath:res.properties" prefix="res."/&gt; ``` 此时在Java代码中需要使用带有...

    一个整合ssm框架的实例

    &lt;context:property-placeholder location="classpath:jdbc.properties"/&gt; &lt;!-- 配置数据库连接池 --&gt; &lt;bean id="dataSource" class=...

    ssm 框架配置

    &lt;context:property-placeholder location="classpath:db.properties"/&gt; &lt;!-- 配置数据源 --&gt; &lt;bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"&gt; &lt;property name="driverClassName" value...

    java 获取properties的几种方式(csdn)————程序.pdf

    如果需要引入多个Properties文件,可以使用`&lt;context:property-placeholder&gt;`标签,指定多个`location`: ```xml &lt;context:property-placeholder location="classpath:/resources/config/commonConfig.properties...

    spring4-hibernate4-struts2整合

    &lt;context:property-placeholder location="classpath:config.properties"/&gt; &lt;!-- 自动扫描dao和service包 --&gt; &lt;context:component-scan base-package="me.gacl.dao,me.gacl.service"/&gt; &lt;/beans&gt; ``` 4. **...

    spring与mybatis整合配置文档

    &lt;context:property-placeholder location="classpath:dbconfig.properties"/&gt; &lt;bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&gt; &lt;property name="jdbcUrl" value="${jdbc.jdbcUrl...

    ssm框架的搭建

    &lt;context:property-placeholder file-encoding="utf-8" location="classpath:db.properties"/&gt; &lt;!-- 数据源配置 --&gt; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&gt; &lt;property name...

    spring,配置文件从属性文件读取JDBC连接的相关参数

    &lt;context:property-placeholder location="classpath:database.properties" /&gt; &lt;!-- 声明数据源bean --&gt; &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; &lt;property...

    17 Spring IoC容器如何读取多个属性文件或者配置文件?慕课专栏(1)1

    在Spring的老版本中,通常使用`&lt;context:property-placeholder&gt;`或`&lt;util:properties&gt;`元素来加载属性文件。例如: ```xml &lt;!-- 使用 context:property-placeholder --&gt; &lt;beans xmlns=...

    OA项目SSH整合框架

    &lt;context:property-placeholder location="classpath:jdbc.properties" /&gt; &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt; &lt;property name=...

    spring-framework-3.2.0.RC2-schema.zip

    `context`命名空间下的 `&lt;context:component-scan&gt;`、`&lt;context:property-placeholder&gt;`等元素,用于扫描组件、加载外部属性文件,增强了Spring的应用范围和灵活性。 "cache"模块则提供了缓存抽象,支持如 EhCache...

    Spring+mybatis+mysql配置文件整合

    &lt;context:property-placeholder location="classpath:config/jdbc.properties"/&gt; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"&gt; &lt;property name="driverClassName" value="${jdbc....

    第十章 Spring 配置元信息(Configuration Metadata)1

    7. **基于Properties和YAML文件装载外部化配置**:`&lt;context:property-placeholder&gt;`和`&lt;context:property-override&gt;`用于加载和覆盖属性值,而YAML文件提供了更友好的格式来组织配置数据。 8. **基于Extensible ...

    spring_MVC源码

    15. &lt;context:property-placeholder location="classpath:/hibernate.properties" /&gt; 16. 17. &lt;bean id="sessionFactory" 18. class="org.springframework.orm.hibernate3.annotation....

Global site tag (gtag.js) - Google Analytics