LINUX开源监控平台Nagios(性能分析图表)
2010-08-24 22:57
771 查看
大部分情况下,每个事务代理的事务属性大同小异,事务代理的实现类都是TransactionProxyFactoryBean,事务代理bean都必须注入事务管理器。
对于这种情况,Spring提供了bean与bean之间的继承,可以简化配置。将大部分的通用配置,配置成事务模板,而实际的事务代理bean,则继承事务模板。这种配置方式可以减少部分配置代码,下面是采用继承的配置文件:
Xml代码
<?xmlversion="1.0"encoding="gb2312"?>
<!--Spring配置文件的文件头,包含DTD等信息-->
<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--定义数据源-->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--定义数据库驱动-->
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<!--定义数据库url-->
<propertyname="url"><value>jdbc:mysql://localhost:3306/spring</value></property>
<!--定义数据库用户名-->
<propertyname="username"><value>root</value></property>
<!--定义数据库密码-->
<propertyname="password"><value>32147</value></property>
</bean>
<!--定义一个hibernate的SessionFactory-->
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--定义SessionFactory必须注入DataSource-->
<propertyname="dataSource"><reflocal="dataSource"/></property>
<propertyname="mappingResources">
<list>
<!--以下用来列出所有的PO映射文件-->
<value>Person.hbm.xml</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<!--此处用来定义hibernate的SessionFactory的属性:
不同数据库连接,启动时选择create,update,create-drop-->
<propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<propkey="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!--定义事务管理器,使用适用于Hibernte的事务管理器-->
<beanid="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!--HibernateTransactionManagerbean需要依赖注入一个SessionFactorybean的引用-->
<propertyname="sessionFactory"><reflocal="sessionFactory"/></property>
</bean>
<!--配置事务模板,模板bean被设置成abstractbean,保证不会被初始化-->
<beanid="txBase"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true"abstract="true">
<!--为事务模板注入事务管理器-->
<propertyname="transactionManager"><refbean="transactionManager"/></property>
<!--设置事务属性-->
<propertyname="transactionAttributes">
<props>
<propkey="find*">PROPAGATION_REQUIRED,readOnly</prop>
<propkey="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!--实际的事务代理bean-->
<beanid="personDao"parent="txBase">
<!--采用嵌套bean配置目标bean-->
<propertyname="target">
<beanclass="lee.PersonDaoHibernate">
<propertyname="sessionFactory"><reflocal="sessionFactory"/></property>
</bean>
</property>
</bean>
</beans>
这种配置方式,相比前面直接采用TransactionProxyFactoryBean的事务代理配置方式,可以大大减少配置文件的代码量。每个事务代理的配置都继承事务模板,无需重复指定事务代理的实现类,无需重复指定事务传播属性——当然,如果新的事务代理有额外的事务属性,也可指定自己的事务属性,此时,子bean的属性覆盖父bean的属性。当然每个事务代理bean都必须配置自己的目标bean,这不可避免。
上面的配置可看出,事务代理的配置依然是增量式的,每个事务代理都需要单独配置——虽然增量已经减少,但每个事务代理都需要单独配置。
对于这种情况,Spring提供了bean与bean之间的继承,可以简化配置。将大部分的通用配置,配置成事务模板,而实际的事务代理bean,则继承事务模板。这种配置方式可以减少部分配置代码,下面是采用继承的配置文件:
Xml代码
<?xmlversion="1.0"encoding="gb2312"?>
<!--Spring配置文件的文件头,包含DTD等信息-->
<!DOCTYPEbeansPUBLIC"-//SPRING//DTDBEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--定义数据源-->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--定义数据库驱动-->
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<!--定义数据库url-->
<propertyname="url"><value>jdbc:mysql://localhost:3306/spring</value></property>
<!--定义数据库用户名-->
<propertyname="username"><value>root</value></property>
<!--定义数据库密码-->
<propertyname="password"><value>32147</value></property>
</bean>
<!--定义一个hibernate的SessionFactory-->
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--定义SessionFactory必须注入DataSource-->
<propertyname="dataSource"><reflocal="dataSource"/></property>
<propertyname="mappingResources">
<list>
<!--以下用来列出所有的PO映射文件-->
<value>Person.hbm.xml</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<!--此处用来定义hibernate的SessionFactory的属性:
不同数据库连接,启动时选择create,update,create-drop-->
<propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<propkey="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
<!--定义事务管理器,使用适用于Hibernte的事务管理器-->
<beanid="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!--HibernateTransactionManagerbean需要依赖注入一个SessionFactorybean的引用-->
<propertyname="sessionFactory"><reflocal="sessionFactory"/></property>
</bean>
<!--配置事务模板,模板bean被设置成abstractbean,保证不会被初始化-->
<beanid="txBase"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true"abstract="true">
<!--为事务模板注入事务管理器-->
<propertyname="transactionManager"><refbean="transactionManager"/></property>
<!--设置事务属性-->
<propertyname="transactionAttributes">
<props>
<propkey="find*">PROPAGATION_REQUIRED,readOnly</prop>
<propkey="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!--实际的事务代理bean-->
<beanid="personDao"parent="txBase">
<!--采用嵌套bean配置目标bean-->
<propertyname="target">
<beanclass="lee.PersonDaoHibernate">
<propertyname="sessionFactory"><reflocal="sessionFactory"/></property>
</bean>
</property>
</bean>
</beans>
这种配置方式,相比前面直接采用TransactionProxyFactoryBean的事务代理配置方式,可以大大减少配置文件的代码量。每个事务代理的配置都继承事务模板,无需重复指定事务代理的实现类,无需重复指定事务传播属性——当然,如果新的事务代理有额外的事务属性,也可指定自己的事务属性,此时,子bean的属性覆盖父bean的属性。当然每个事务代理bean都必须配置自己的目标bean,这不可避免。
上面的配置可看出,事务代理的配置依然是增量式的,每个事务代理都需要单独配置——虽然增量已经减少,但每个事务代理都需要单独配置。
相关文章推荐
- LINUX开源监控平台Nagios(性能分析图表)
- LINUX开源监控平台Nagios(NRPE的安装配置)
- LINUX开源监控平台Nagios(主机监控配置)
- LINUX开源监控平台Nagios(基本安装)
- LINUX开源监控平台Nagios(基本安装)
- LINUX开源监控平台Nagios(NRPE的安装配置)
- LINUX开源监控平台Nagios(警告功能配置)
- LINUX开源监控平台Nagios(服务监控配置)
- LINUX开源监控平台Nagios(主机监控配置)
- LINUX开源监控平台Nagios(插件的安装和使用)
- LINUX开源监控平台Nagios(插件的安装和使用)
- LINUX开源监控平台Nagios(主机监控配置)
- LINUX开源监控平台Nagios(服务监控配置)
- LINUX开源监控平台Nagios(警告功能配置)
- Nagios性能分析图表的实现
- linux 性能监控分析以及调优(free , uptime)
- 网络监控软件Nagios, Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报
- Linux下Java线程详细监控和其dump的分析使用—-分析Java性能瓶颈
- Nagios监控平台之二:nrpe监控远程Linux主机
- Linux下使用NMON监控、分析系统性能