- 浏览: 348603 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
pacoson:
感谢楼主。请受小生一拜。
ANT预编译JSP -
zhuhongming123:
一楼的同学Lucene4.* 以上的 已经改成了Numeric ...
Lucene日期排序及组合查询 -
ywjk520:
RangeQuery在哪个包里?
Lucene日期排序及组合查询 -
willwen:
有个疑问,楼主,为何初始化bits 从txt读取已有的网址是直 ...
布隆过滤器(Bloom Filter)之java实例 -
yu_226528:
还不如没有呢
jFreeChart 在jsp页上实现简单的折线图、柱状图
大部分情况下,每个事务代理的事务属性大同小异,事务代理的实现类都是TransactionProxyFactoryBean,事务代理bean都必须注入事务管理器。
对于这种情况,Spring提供了bean与bean之间的继承,可以简化配置。将大部分的通用配置,配置成事务模板,而实际的事务代理bean,则继承事务模板。这种配置方式可以减少部分配置代码,下面是采用继承的配置文件:
Xml代码
- <?xml version="1.0" encoding="gb2312"?>
- <!-- Spring配置文件的文件头,包含DTD等信息-->
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
- "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!--定义数据源-->
- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <!-- 定义数据库驱动-->
- <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
- <!-- 定义数据库url-->
- <property name="url"><value>jdbc:mysql://localhost:3306/spring</value></property>
- <!-- 定义数据库用户名-->
- <property name="username"><value>root</value></property>
- <!-- 定义数据库密码-->
- <property name="password"><value>32147</value></property>
- </bean>
- <!--定义一个hibernate的SessionFactory-->
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <!-- 定义SessionFactory必须注入DataSource-->
- <property name="dataSource"><ref local="dataSource"/></property>
- <property name="mappingResources">
- <list>
- <!--以下用来列出所有的PO映射文件-->
- <value>Person.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <!--此处用来定义hibernate的SessionFactory的属性:
- 不同数据库连接,启动时选择create,update,create-drop-->
- <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- </props>
- </property>
- </bean>
- <!-- 定义事务管理器,使用适用于Hibernte的事务管理器-->
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <!-- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用-->
- <property name="sessionFactory"><ref local="sessionFactory"/></property>
- </bean>
- <!-- 配置事务模板,模板bean被设置成abstract bean,保证不会被初始化-->
- <bean id="txBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
- lazy-init="true" abstract="true">
- <!-- 为事务模板注入事务管理器-->
- <property name="transactionManager"><ref bean="transactionManager"/></property>
- <!-- 设置事务属性-->
- <property name="transactionAttributes">
- <props>
- <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
- <prop key="*">PROPAGATION_REQUIRED</prop>
- </props>
- </property>
- </bean>
- <!-- 实际的事务代理bean-->
- <bean id="personDao" parent="txBase">
- <!-- 采用嵌套bean配置目标bean -->
- <property name="target">
- <bean class="lee.PersonDaoHibernate">
- <property name="sessionFactory"><ref local="sessionFactory"/></property>
- </bean>
- </property>
- </bean>
- </beans>
这种配置方式,相比前面直接采用TransactionProxyFactoryBean的事务代理配置方式,可以大大减少配置文件的代码量。每个事务代理的配置都继承事务模板,无需重复指定事务代理的实现类,无需重复指定事务传播属性——当然,如果新的事务代理有额外的事务属性,也可指定自己的事务属性,此时,子bean的属性覆盖父bean的属性。当然每个事务代理bean都必须配置自己的目标bean,这不可避免。
上面的配置可看出,事务代理的配置依然是增量式的,每个事务代理都需要单独配置——虽然增量已经减少,但每个事务代理都需要单独配置。
发表评论
-
在Struts中基于Spring的AOP MethodInterceptor(拦截器)的权限验证
2010-08-13 13:34 1701本程序是关于"某考试系统"中的aop应用. ... -
反射实现 AOP 动态代理模式(2)
2010-08-05 12:40 938上面类中出现的Logger类和Level枚举还是和上一上例子的 ... -
反射实现 AOP 动态代理模式(1)
2010-08-05 12:37 907其实AOP的意思就是面向切面编程.OO注重的是我们解决问题的方 ... -
Spring事务配置的五种方式
2010-06-25 16:51 786前段时间对Spring的事务配置做了比较深入的研究,在此之间对 ... -
使用 Spring 2.5 注释驱动的 IoC 功能(2)
2010-06-25 16:37 897使用 JSR-250 的注释 Sprin ... -
使用 Spring 2.5 注释驱动的 IoC 功能(1)
2010-06-25 16:36 737概述 注释配置相对于 XML 配置具有很多的优势: 它可以 ... -
spring事务配置方法(BeanNameAutoProxyCreator)
2010-05-11 15:18 1057采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统 ... -
spring事务配置方法(TransactionProxyFactoryBean)
2010-05-11 15:10 1083采用这种方式的配置时候,配置文件的增加非常快,每个bean有需 ... -
spring事务配置方法(BeanNameAutoProxyCreator)
2010-05-11 15:05 1144采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统 ... -
spring声明式事务
2010-05-11 14:26 839Spring中几种常见的事务配置,是Aop和Ioc的充分体现以 ... -
Spring AOP 入门实例
2010-05-01 19:18 856AOP 面向切面,可以让我们在不修改业务代码的前提下,在业务代 ... -
使用动态代理实现简单AOP
2010-05-01 19:02 798Spring默认使用JDK动态代理来实现AOP,如果业务对象没 ... -
Sping acegi 配置文件
2010-05-01 18:23 969applicationContext-acegi-securi ... -
Spring的BeanFactory
2010-05-01 18:17 784一、Spring装配Bean的过程 1. 实例化; 2. 设置 ... -
使用Spring方法注入协调不同步的bean
2010-05-01 18:00 1240<?xml version="1.0" ... -
几种加载Spring的配置文件的方式
2010-05-01 16:49 1290package com.liu.test; pu ... -
Quartz在Spring中动态设置cronExpression
2009-11-20 15:26 1243什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什 ... -
使用Spring发邮件
2009-11-07 14:15 998关于Spring的邮件发送的功能演示: (我把程序中一些敏感 ... -
Spring中的Quartz配置
2009-11-07 10:16 917Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
Spring ~IOC Annotations
2009-10-29 18:49 10441.1 零配置使用场合 IOC Annotations ...
相关推荐
下面将详细介绍这五种Spring事务配置方式。 1. **基于接口的事务代理(TransactionProxyFactoryBean)** 在第一种配置方式中,每个Bean都有一个单独的代理。首先,我们配置DataSource(如SessionFactory)和...
### Spring 事务配置的五种方法详解 #### 一、引言 在现代软件开发过程中,事务处理是一项至关重要的技术,特别是在涉及数据库操作时。Spring 框架提供了丰富的事务管理功能,支持多种不同的配置方式来满足不同...
以下是对Spring事务配置五种方式的详细解释: 1. **基于代理的事务管理(Proxy-based Transaction Management)** 这是第一种配置方式,每个Bean都有一个独立的代理。在示例代码中,`TransactionProxyFactoryBean`...
除了上述两种方式外,还有三种常用的Spring事务配置方法,包括: 1. **基于XML的声明式事务**:通过在XML配置文件中使用`<tx:advice>`和`<tx:method>`元素来定义事务切面和事务属性,适用于需要显式控制事务边界的...
以上介绍了五种Spring事务配置的方法,每种方法都有其适用的场景。在实际开发过程中,可以根据项目的具体需求选择合适的事务配置方式,从而更好地满足业务需求。需要注意的是,合理的设计和配置对于确保系统的稳定性...
“工具”可能是指Spring提供的各种事务管理工具,如TransactionDefinition、TransactionStatus等,这些工具类帮助我们更好地进行事务配置和管理。 至于压缩包文件名称“spring2-tansaction”,可能是包含了一些...
本文将深入探讨Spring事务管理的相关类及其UML图,帮助理解这些类之间的关系和作用。 首先,Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理通过调用`PlatformTransactionManager`...
接下来,我们介绍两种常见的Spring事务配置方式: ### 第一种方式:每个Bean都有一个代理 在这种配置中,每个需要事务管理的Bean都有一个特定的代理实例,如上面的XML配置所示。`TransactionProxyFactoryBean`用于...
### Spring 1.2 的 JDBC 配置详解 在 Spring 框架 1.2 版本中,...通过上述详细的配置,Spring 1.2 能够有效地管理数据库连接、事务处理以及业务逻辑层的操作,极大地简化了开发工作并提高了代码的可维护性和扩展性。
无论是配置数据源、SessionFactory还是事务管理器,Spring都提供了丰富的配置选项,使得开发者能够根据实际需求进行定制化配置。这种高度的可配置性是Spring框架的一大优势,也是其深受广大开发者喜爱的原因之一。
### Spring 2.0 声明式事务配置详解 #### 一、Spring 2.0 声明式事务概述 随着 Spring 框架的发展,从 Spring 1.x 到 Spring 2.0 版本,声明式事务管理方式有了显著改进。在 Spring 1.x 中,主要通过 AOP 方式实现...
2. 声明式事务管理:通过注解或XML配置,Spring会自动管理事务的开始、提交、回滚。如使用@Transactional注解标记方法,指定传播行为(如PROPAGATION_REQUIRED表示必须在事务中运行,无事务则新建)。 声明式事务...
10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的...
Spring AOP的TransactionProxyFactoryBean就是一个用于事务管理的代理类,它可以拦截并添加事务上下文到JavaBean的方法调用中,从而简化事务处理的代码。 接着,文章提到了Spring对Hibernate的集成支持,它解决了...
2. 声明式事务管理:这是Spring推荐的方式,通过在XML配置或注解中声明事务属性,Spring会自动处理事务的开始、提交、回滚等操作。例如,使用TransactionProxyFactoryBean可以创建一个具有事务管理能力的代理类,...
10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的...
- **配置 DataSource**:在 Spring 配置文件中定义数据源。 - **创建 SessionFactory**:基于 DataSource 创建 SessionFactory。 - **DAO 继承 HibernateDaoSupport**:DAO 类继承自 HibernateDaoSupport,并使用...
例如,使用TransactionProxyFactoryBean,可以配置PROPAGATION_REQUIRED等事务传播行为,Spring会自动处理事务的提交和回滚。 总的来说,Spring框架通过其强大的功能和设计理念,极大地简化了Java后端开发,提高了...
`TransactionProxyFactoryBean`继承自`AbstractSingletonProxyFactoryBean`,专门用于处理事务管理。这意味着它只能生成单例的代理实例,无法满足每次请求都需要新实例的场景。如果需要支持非单例的事务管理,建议...