当多个方法需要事务时,可用XML方式,表达式可灵活配置
a) xml(推荐,可以同时配置好多方法)
i. <bean txmanager
ii. <aop:config
1. <aop:pointcut
2. <aop:advisor pointcut-ref advice-ref
iii. <tx:advice: id transaction-manager = ...
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<context:annotation-config />
<context:component-scan base-package="org.spring"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="mySessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.model.User</value>
<value>com.model.Log</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory" />
</bean>
<aop:config>
<aop:pointcut id="bussinesService"
expression="execution(public * com.service..*.*(..))"/>
<aop:advisor pointcut-ref="bussinesService" advice-ref="txAdvice"/>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="getUser" read-only="true" />
<tx:method name="add*" />
</tx:attributes>
</tx:advice>
</beans>
------------------------------------------------------------------
txManager指定 使用什么事务类(Hibernate、JDBC、JPA……)
需要参考SessionFactory,从其中读取配置,ref="sessionFactory_id"
而SessionFactory用到了数据源,需参考数据源ID配置
aop:config指定切面配置
aop:pointcut定义切面,表达式
aop:advisor建议者,使用XXX建议,参考的是txAdvice,ref="txAdvice_id"
tx:advice指定事务的建议,需要指明是哪个事务类txManager
tx:attributes事务属性
tx:method 要在name为XXX的方法上,织入切面
如果不指定propagation 默认是 REQUERED
测试:
UserService类:
--------------------
public void add(User user) {
Session session = sessionFactory.getCurrentSession();
session.save(user);
Log log = new Log();
logDAO.save(log);
}
--------------------
Junit:
--------------------
@Test
public void testAdd() throws Exception {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)ctx.getBean("userService");
service.add(new User());
}
分享到:
相关推荐
Xml文件配置实现声明式事务管理 Xml文件配置实现声明式事务管理
5.2.2 基于Annotation方式的声明式事务 基于Annotation方式的声明式事务 1 在...接下来的两个小节中,将对这两种声明式事务管理方式进行详细讲解。 基于XML方式的声明式事务是在配置文件中通过元素配置事务规则来实现
1.掌握Myeclipse的使用。 2.掌握spring框架和hibernate框架的使用。 3. 掌握整合spring和hibernate的持久化操作编程 4.掌握基于AOP的声明式事务编程...3.配置WEB-INF/applicationContext.xml提供基于AOP的声明式事务
Spring声明式事务的写法,已经Spring如何使用xml来管理事务
一个实例小工程,说的是spring3+hibernate4怎么配置声明式事务管理(xml方式)
主要介绍了Spring实战之使用XML方式管理声明式事务操作,结合实例形式详细分析了Spring XML方式管理声明式事务具体步骤、配置、接口及使用技巧,需要的朋友可以参考下
其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常执行(这时(1)中的方法都不需进行合法性判断,...
* 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. * 基于AspectJ的XML方式.(经常使用) * 一旦配置好之后,...
发布于2013-5-6项目使用SSH架构,现在要添加Spring事务管理功能,针对...首先在/WEB-INF/applicationContext.xml添加以下内容:注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理; 描述了声明式事务管理,XML,注解;事务配置详解。。。
Spring提供了声明式事务处理机制,它基于AOP实现,无须编写任何事务管理代码,所有的工作全在配置文件中完成。 二、声明式事务的XML配置方式 为业务方法配置事务切面,需要用到tx和aop两个命名空间下的标签,先在...
Spring中基于注解的声明式事务管理和基于XML文件的声明式事务管理测试程序
其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常执行(这时(1)中的方法都不需进行合法性判断,...
1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式;...5、掌握基于XML和Annotation的声明式事务管理的使用。
2.声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和 XML 配置来管理事务。 Spring 事务配置示例(使用 tx 标签配置的拦截器) --------------------- 作者:我要取一个响亮的昵称 来源:...
10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 ...
10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 ...
JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。
10.1 声明式异常处理 338 10.1.1 http错误代码的处理 338 10.1.2 java异常的处理 341 10.2 程序式异常处理 343 10.2.1 在try-catch语句中处理异常 343 10.2.2 使用requestdispatcher来处理异常 346 10.3 小结 ...