欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

元素 location属性值笔记

程序员文章站 2022-06-08 22:06:44
...
前言
一般的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包。