`
- 浏览:
1091619 次
-
Spring 利用PropertyPlaceholderConfigurer占位符
1.Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中一些动态设定的值(value),在XML中替换为占位该键($key$)的值,.properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的灵活性。
2.在Spring中,使用PropertyPlaceholderConfigurer可以在XML配置文件中加入外部属性文件,当然也可以指定外部文件的编码,如:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>conf/sqlmap/jdbc.properties</value>
</property>
<property name="fileEncoding">
<value>UTF-8</value>
</property>
</bean>
当然也可以引入多个属性文件,如:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/mail.properties</value>
<value>classpath: conf/sqlmap/jdbc.properties</value>//注意这两种value值的写法
</list>
</property>
</bean>
基本的使用方法是:
Xml代码
<bean id="propertyConfigurerForAnalysis" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:/spring/include/dbQuery.properties</value>
</property>
<property name="fileEncoding">
<value>UTF-8</value>
</property>
</bean>
其中classpath是引用src目录下的文件写法。
当存在多个Properties文件时,配置就需使用locations了:
Xml代码
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/spring/include/jdbc-parms.properties</value>
<value>classpath:/spring/include/base-config.properties</value>
<value>classpath*:config/jdbc.properties</value>
</list>
</property>
</bean>
接下来我们要使用多个PropertyPlaceholderConfigurer来分散配置,达到整合多工程下的多个分散的Properties文件,其配置如下
Xml代码
<bean id="propertyConfigurerForProject1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="1" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="location">
<value>classpath:/spring/include/dbQuery.properties</value>
</property>
</bean>
Xml代码
<bean id="propertyConfigurerForProject2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="2" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:/spring/include/jdbc-parms.properties</value>
<value>classpath:/spring/include/base-config.properties</value>
</list>
</property>
</bean> 其中order属性代表其加载顺序,而ignoreUnresolvablePlaceholders为是否忽略不可解析的Placeholder,如配置了多个PropertyPlaceholderConfigurer,则需设置为true
3.譬如,jdbc.properties的内容为:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/mysqldb?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=round;
jdbc.username=root
jdbc.password=123456
4.那么在spring配置文件中,我们就可以这样写:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath: conf/sqlmap/jdbc.properties </value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
5.这样,一个简单的数据源就设置完毕了。可以看出:PropertyPlaceholderConfigurer起的作用就是将占位符指向的数据库配置信息放在bean中定义的工具。
- <!--dataSource-->
- <beanid="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <propertyname="driverClassName"
- value="${jdbc.driverClassName}"/>
- <propertyname="url"value="${jdbc.url}"/>
- <propertyname="username"value="${jdbc.username}"/>
- <propertyname="password"value="${jdbc.password}"/>
- </bean>
- <!--sessionFactory-->
- <beanid="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <propertyname="dataSource"ref="dataSource"/>
- <propertyname="mappingResources">
- <list>
- <value>cn/xg/hibernate/spring/User.hbm.xml</value><!--这里的映射路径问题,这种方法只能一个一个加-->
- <value>cn/xg/hibernate/spring/Group.hbm.xml</value>
- </list>
- <!--加载一个路径下的*.hbm.xml文件方法:
- <propertyname="mappingDirectoryLocations">
- <list>
- <value>classpath:/cn/xg/spring/model</value>
- </list>
- </property>
- -->
- </property>
- <propertyname="hibernateProperties">
- <props>
- <propkey="hibernate.dialect">
- ${hibernate.dialect}
- </prop>
- <propkey="hibernate.show_sql">true</prop>
- </props>
- </property>
- </bean>
- <!--DAO实现类extendsHibernateDaoSupport,注入sessionFactory-->
- <beanid="userMgrImpl"class="cn.xg.hibernate.spring.UserMgrImpl">
- <propertyname="sessionFactory"ref="sessionFactory"/>
- </bean>
- <beanid="groupMgrImpl"
- class="cn.xg.hibernate.spring.GroupMgrImpl">
- <propertyname="sessionFactory"ref="sessionFactory"/>
- <propertyname="userImpl"ref="userMgrImpl"/>
- <propertyname="transactionTemplate"ref="transactionTemplate"/>
- </bean>
- <!--事务管理-->
- <beanid="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <propertyname="sessionFactory"ref="sessionFactory"/>
- </bean>
- <!--编程式事务的写法:向Dao实现类中注入transactionTemplate,调动其execute()方法,接口回调newTransactionCallback()-->
- <beanid="transactionTemplate"class="org.springframework.transaction.support.TransactionTemplate">
- <propertyname="transactionManager"ref="transactionManager"/>
- </bean>
- <!--声时式事务第一种写法-->
- <!--
- <beanid="groupMgr"
- class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
- <propertyname="transactionManager"ref="transactionManager"/>
- <propertyname="target"ref="groupMgrImpl"/>
- <propertyname="transactionAttributes">
- <props>
- <propkey="add*">PROPAGATION_REQUIRED</prop>
- <propkey="get*">PROPAGATION_REQUIRED</prop>
- <propkey="*">readOnly</prop>
- </props>
- </property>
- </bean>
- -->
- <!--声时式事务第二种写法-->
- <!--事务的传播特性
- <tx:adviceid="txAdvice">
- <tx:attributes>
- <tx:methodname="add*"propagation="REQUIRED"/>
- <tx:methodname="get*"propagation="REQUIRED"/>
- <tx:methodname="*"read-only="true"/>
- </tx:attributes>
- </tx:advice>
- <aop:config>
- <aop:advisorpointcut="execution(*cn.xg.hibernate.spring.*.*(..))"
- advice-ref="txAdvice"/>
- </aop:config>
- -->
- </beans>
- jdbc.properties
- jdbc.driverClassName=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql:
- jdbc.username=数据库用户名
- jdbc.password=数据库密码
- hibernate.dialect=org.hibernate.dialect.MySQLDialect(方言.这里是MySql)
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Spring属性占位符PropertyPlaceholderConfigurer的使用,自己写的一个demo
Spring中PropertyPlaceholderConfigurer的使用
NULL 博文链接:https://wokeke.iteye.com/blog/2214113
主要介绍了Spring如何使用PropertyPlaceholderConfigurer读取文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
利用executor执行并行的grep 25.6.AOP 第二十六章. AOP指南 26.1.简介 26.2.基础知识 26.2.1.应用通知 26.2.2.使用切入点-基本概念 26.3.深入探讨 26.3.1.其它类型的通知 26.3.1.1.前置通知 26.3.1.2.后置通知 26.3...
PropertyPlaceholderConfigurer示例 3.7.2.2. PropertyOverrideConfigurer示例 3.7.3. 使用FactoryBean定制实例化逻辑 3.8. ApplicationContext 3.8.1. 利用MessageSource实现国际化 3.8.2. 事件 3.8.3. 底层资源的...
JDBCTemp+MySQL示例。Spring,PropertyPlaceholderConfigurer,BeanPropertyRowMapper
6 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 7 8 9 <value>/WEB-INF/jdbc.properties 10 11 12 13 14 它配置了以下功能: 读取...
NULL 博文链接:https://chyy001.iteye.com/blog/1338488
不使用XML定义档进行 Bean设置 Aware 相关介面 BeanPostProcessor BeanFactoryPostProcessor PropertyPlaceholderConfigurer PropertyOverrideConfigurer CustomEditorConfigurer ...
在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面...<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath:proxool.properties ...
4.8.2.1 示例:PropertyPlaceholderConfigurer. 82 4.8.2.2 示例:PropertyOverrideConfigurer 83 4.8.3 使用FactoryBean 来自定义实例化逻辑. 84 4.9 基于注解的容器配置. 85 4.9.1 @Required....
#Spring 属性注释扩展的 PropertyPlaceHolderConfigurer 使用注解将配置属性注入到 Spring 组件中。 注意:Spring 3 现在支持使用 @Value 注释的容器的。 该项目仅用于 Spring 2.5.x 支持。 ##入门Spring房产注解...
PropertyPlaceholderConfigurer PropertyResourceConfigurer PropertyValue PropertyValues PropertyValuesEditor PrototypeAspectInstanceFactory PrototypeTargetSource ProxyConfig ProxyFactory ...
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>WEB-INF/jdbc.properties class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-...
spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath*:jdbc.properties <!-- 数据源配置,主要用于开发测试...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................