`
leon.s.kennedy
  • 浏览: 106852 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

使用XML进行声明式事务管理

 
阅读更多

当多个方法需要事务时,可用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文件配置实现声明式事务管理 Xml文件配置实现声明式事务管理

    基于java的企业级应用开发:声明式事务管理.ppt

    5.2.2 基于Annotation方式的声明式事务 基于Annotation方式的声明式事务 1 在...接下来的两个小节中,将对这两种声明式事务管理方式进行详细讲解。 基于XML方式的声明式事务是在配置文件中通过元素配置事务规则来实现

    spring声明式事务管理

    1.掌握Myeclipse的使用。 2.掌握spring框架和hibernate框架的使用。 3. 掌握整合spring和hibernate的持久化操作编程 4.掌握基于AOP的声明式事务编程...3.配置WEB-INF/applicationContext.xml提供基于AOP的声明式事务

    spring_声明式事务_xml事务的书写.zip

    Spring声明式事务的写法,已经Spring如何使用xml来管理事务

    spring3+hibernate4声明式事务配置(xml方式)

    一个实例小工程,说的是spring3+hibernate4怎么配置声明式事务管理(xml方式)

    Spring实战之使用XML方式管理声明式事务操作示例

    主要介绍了Spring实战之使用XML方式管理声明式事务操作,结合实例形式详细分析了Spring XML方式管理声明式事务具体步骤、配置、接口及使用技巧,需要的朋友可以参考下

    Spring JDBC与事务管理

    其操作流程是获取书的单价-&gt;买书(更新库存)-&gt;更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常执行(这时(1)中的方法都不需进行合法性判断,...

    Spring+Hibernate事务管理

    * 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. * 基于AspectJ的XML方式.(经常使用) * 一旦配置好之后,...

    Spring声明式事务配置管理方法

    发布于2013-5-6项目使用SSH架构,现在要添加Spring事务管理功能,针对...首先在/WEB-INF/applicationContext.xml添加以下内容:注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。

    Spring框架--事务管理

    Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理; 描述了声明式事务管理,XML,注解;事务配置详解。。。

    Spring添加声明式事务.docx

    Spring提供了声明式事务处理机制,它基于AOP实现,无须编写任何事务管理代码,所有的工作全在配置文件中完成。 二、声明式事务的XML配置方式 为业务方法配置事务切面,需要用到tx和aop两个命名空间下的标签,先在...

    Spring中的事务管理

    Spring中基于注解的声明式事务管理和基于XML文件的声明式事务管理测试程序

    JavaEE的Spring JDBC与事务管理 实验

    其操作流程是获取书的单价-&gt;买书(更新库存)-&gt;更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常执行(这时(1)中的方法都不需进行合法性判断,...

    Spring JDBC与事务管理源代码

    1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式;...5、掌握基于XML和Annotation的声明式事务管理的使用。

    ssm整合以及相关练习文档

    2.声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和 XML 配置来管理事务。 Spring 事务配置示例(使用 tx 标签配置的拦截器) --------------------- 作者:我要取一个响亮的昵称 来源:...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    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 小结 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    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 小结 ...

    尚硅谷佟刚Spring4代码及PPT.rar

    JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    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 小结 ...

Global site tag (gtag.js) - Google Analytics