[size=large]前言[/size]
一般的spring框架都是用在web项目中,xml中的properties文件的配置一般都是classpath:db.properties的格式。但在非web项目中,需要将这些db.propperties文件独立放在一个conf文件夹中,那么就无法使用classpath:这种格式了。最近在部署一个项目中遇到经常会修改properties文件中配置属性的值,因此将部署包中的属性配置文件都提到一个固定目录,由于项目Spring的配置文件采用<context:property-placeholder/>元素引用这些properties配置文件,因此对 location属性的支持的文件位置做一下记录。
[size=large]location属性值[/size]
1. location属性值classpath 与 classpath*
如:
[b] .[/b]classpath可以加载整个classpath下,包括jar包里面的资源文件。
[b] .[/b]classpath只会返回第一个匹配的资源,查找路径是优先在项目中存在资源文件,再查找jar包。
[b] .[/b]资源文件名可包含通配符(如spring-*.xml,spring*.xml),如果根目录为"", 则classpath加载不到任何资源而classpath*则可以加载到classpath中可以匹配的目录中的资源,但是不能加载到jar包中的资源
2. location属性值file协议绝对路径
3.locationfile协议属性值环境变量
或
file后面的参数config.dir java的环境变量,可以在java -Dconfig.dir=c:/tomcat8来指定
[size=large]结论[/size]
这样做的好处就是可以将一个jar包做成产品化的形式,否则配置文件放在jar包中,每次修改配置都需要重新修改jar包。
一般的spring框架都是用在web项目中,xml中的properties文件的配置一般都是classpath:db.properties的格式。但在非web项目中,需要将这些db.propperties文件独立放在一个conf文件夹中,那么就无法使用classpath:这种格式了。最近在部署一个项目中遇到经常会修改properties文件中配置属性的值,因此将部署包中的属性配置文件都提到一个固定目录,由于项目Spring的配置文件采用<context:property-placeholder/>元素引用这些properties配置文件,因此对 location属性的支持的文件位置做一下记录。
[size=large]location属性值[/size]
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" />[b] .[/b]classpath可以加载整个classpath下,包括jar包里面的资源文件。
[b] .[/b]classpath只会返回第一个匹配的资源,查找路径是优先在项目中存在资源文件,再查找jar包。
[b] .[/b]资源文件名可包含通配符(如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来指定
[size=large]结论[/size]
这样做的好处就是可以将一个jar包做成产品化的形式,否则配置文件放在jar包中,每次修改配置都需要重新修改jar包。
本文记录了在非web项目中,如何使用<context:property-placeholder/>元素引用不在classpath下的properties配置文件。主要讨论了location属性值,包括classpath、classpath*、file协议绝对路径以及结合环境变量的使用方式,强调了这种方式便于在不修改jar包的情况下更新配置。

2万+

被折叠的 条评论
为什么被折叠?



