前言
一般的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 博客:https://blog.csdn.net/u010476739/article/details/76735527
通过上述调整,你应该能够解决Spring在整合Mybatis时,使用`<context:property-placeholder>`时遇到的属性解析问题,确保每个数据源都能正确地从属性文件中获取其配置信息。记得在调整配置后,重新启动应用并检查...
在Spring框架中,`<context:property-placeholder>`是用于加载和解析属性文件的一个标签,它允许我们在XML配置或Java配置中使用占位符 `${...}` 来引用属性文件中的值。这样做的好处是,我们可以将敏感信息如数据库...
<context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" ...
<context:property-placeholder location="classpath:jdbc.properties" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name...
<context:property-placeholder location="classpath:jdbc.properties" prefix="jdbc."/> <context:property-placeholder location="classpath:res.properties" prefix="res."/> ``` 此时在Java代码中需要使用带有...
<context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置数据库连接池 --> <bean id="dataSource" class=...
<context:property-placeholder location="classpath:db.properties"/> <!-- 配置数据源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value...
如果需要引入多个Properties文件,可以使用`<context:property-placeholder>`标签,指定多个`location`: ```xml <context:property-placeholder location="classpath:/resources/config/commonConfig.properties...
<context:property-placeholder location="classpath:config.properties"/> <!-- 自动扫描dao和service包 --> <context:component-scan base-package="me.gacl.dao,me.gacl.service"/> </beans> ``` 4. **...
<context:property-placeholder location="classpath:dbconfig.properties"/> <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbc.jdbcUrl...
<context:property-placeholder file-encoding="utf-8" location="classpath:db.properties"/> <!-- 数据源配置 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name...
<context:property-placeholder location="classpath:database.properties" /> <!-- 声明数据源bean --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property...
在Spring的老版本中,通常使用`<context:property-placeholder>`或`<util:properties>`元素来加载属性文件。例如: ```xml <!-- 使用 context:property-placeholder --> <beans xmlns=...
<context:property-placeholder location="classpath:jdbc.properties" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name=...
`context`命名空间下的 `<context:component-scan>`、`<context:property-placeholder>`等元素,用于扫描组件、加载外部属性文件,增强了Spring的应用范围和灵活性。 "cache"模块则提供了缓存抽象,支持如 EhCache...
<context:property-placeholder location="classpath:config/jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc....
7. **基于Properties和YAML文件装载外部化配置**:`<context:property-placeholder>`和`<context:property-override>`用于加载和覆盖属性值,而YAML文件提供了更友好的格式来组织配置数据。 8. **基于Extensible ...
15. <context:property-placeholder location="classpath:/hibernate.properties" /> 16. 17. <bean id="sessionFactory" 18. class="org.springframework.orm.hibernate3.annotation....