`

Action类中使用Spring注入方式的TransactionTemplate

    博客分类:
  • SSH
阅读更多

一、在Spring的配置文件applicationContext.xml中配置事务管理器对象transactionManager:

<!-- 使用注解方式定义事务 -->
	<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />

	<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
....

 二、在Action类中注入transactionManager,便于引入事务控制:

       /**
        * spring提供的事务支持
     */
	private TransactionTemplate transactionTemplate;
	
	@Resource(name="transactionManager")
	public void setTransactionTemplate(PlatformTransactionManager transactionManager) {
		this.transactionTemplate = new TransactionTemplate(transactionManager);
	}

 这里可以把其放入BaseAction中,便于继承于他的子类直接使用,将访问修饰符改为protected:

 

      /**
       * spring提供的事务支持
     */
	protected TransactionTemplate transactionTemplate;
	
	@Resource(name="transactionManager")
	public void setTransactionTemplate(PlatformTransactionManager transactionManager) {
		this.transactionTemplate = new TransactionTemplate(transactionManager);
	}

 

三、在Action的一些方法中使用Spring提供的事务支持

this.transactionTemplate.execute(new TransactionCallback() {
			public Object doInTransaction(TransactionStatus transactionstatus) {
				try{
					productService.saveEntity(product);  // 保存商品
...
...
...					prostandvalueService.save(pdv); // 保存商品规格的值
				}catch(Exception e){
					if(log.isErrorEnabled()){
            				log.error("商品保存出错!"+e.toString());
            				}
					// 事务回退
                    		transactionstatus.setRollbackOnly();
					addActionError("保存失败!<br/>"+e.getMessage());
					return ERROR;
				}
				
				return null;
			}
		});

 

 

 

 

 

 

分享到:
评论

相关推荐

    spring in action 英文原版

    通过上述知识点的总结,我们可以看到《Spring in Action》这本书涵盖了Spring框架的核心概念、主要模块以及如何在实际项目中运用Spring来解决具体问题。对于希望深入学习Spring框架的开发者来说,这是一本不可或缺的...

    spring in action 第三版中文

    书中详细介绍了如何使用XML、注解以及Java配置方式来实现依赖注入。 另外,Spring的AOP(Aspect-Oriented Programming,面向切面编程)功能允许开发人员定义横切关注点,如日志、事务管理等,从而将这些通用功能与...

    在SSH框架中使用Spring的好处.pdf

    综上所述,在SSH框架中使用Spring的主要好处包括: 1. 通过IoC和DI降低组件间的耦合度,提高代码的可维护性和可扩展性。 2. 利用AOP实现事务管理,减少事务处理的代码量,增强事务控制能力。 3. 提供了诸如日志、...

    spring整合struts

    - **配置Struts**:在struts.xml中,配置Action时,可以使用Spring插件来指定Action类在Spring中的bean ID,这样Struts会通过Spring容器获取Action实例。 - **Action类的处理**:Action类不再直接实例化,而是由...

    在SSH框架Spring的作用

    在SSH框架中,这意味着当Struts的Action需要调用Service层的方法时,Spring会自动创建Service实例,并将其注入到Action中,而无需Action自行创建或查找Service。这种模式不仅降低了组件间的耦合,还使得单元测试变得...

    跟我学spring3(8-13)

    ORM(Object-Relational Mapping)是将数据库关系模型与对象模型进行映射的技术,Spring提供了对多种ORM框架如Hibernate、iBATIS和JPA的集成支持,使得开发者可以方便地在Java应用中使用面向对象的方式来操作数据库...

    struts+spring+hibernate笔试题

    - **整合优势:** 通过 Spring 可以轻松地管理和注入 Struts 中的 Action 对象以及其他服务对象。 **Spring 与 Hibernate 集成:** - **数据访问层:** 使用 Spring 的 DAO 支持,可以方便地集成 Hibernate 进行...

    spring_part2

    Spring与Struts结合,可以利用Spring的依赖注入(DI)和AOP特性增强Struts的功能,同时在Struts的动作(Action)和业务服务之间实现事务控制。这通常需要配置Struts的拦截器,以使Spring的事务管理生效。 总的来说...

    spring3 学习

    - **10.2 集成Struts1.x**:详细讲述了Spring与Struts1.x的整合,包括Action和ModelDriven模式的使用。 - **10.3 集成Struts2.x**:解释了Spring与Struts2.x的配合,包括使用Struts2的拦截器和Spring的依赖注入。 ...

    Spring教程

    - Struts的Action支持类,可以利用Spring的依赖注入特性。 #### 十、Spring整合应用 Spring框架可以与其他多种技术进行整合,例如: 1. **Spring和Log4j** - 日志框架整合,通过Spring管理日志配置。 2. **...

    跟我学spring3(8-13).pdf

    3. **8.3 集成iBATIS**:Spring与iBATIS的集成主要通过SqlMapClientTemplate来实现,使得在Spring环境中可以方便地使用iBATIS的XML映射文件和动态SQL。 4. **8.4 集成JPA**:Spring支持JPA(Java Persistence API)...

    跟我学spring3(8-13)

    - **8.2 集成Hibernate3**:详细讲解了如何在Spring中配置和使用Hibernate,包括SessionFactory的创建、事务管理、HQL查询等。 - **8.3 集成iBATIS**:展示了如何将Spring与iBATIS结合,包括SqlMapConfig.xml的...

    收集的struts+spring+hibernate面试题.doc

    - 在 Spring 中使用 `scope="prototype"` 来管理 Action 的生命周期,确保每个 HTTP 请求都有一个新的 Action 实例。 #### 4. Struts 如何实现 MVC 模式 Struts 采用 MVC 架构模式来组织应用程序结构: - **Model...

    2022年strutsspringhibernate面试题.doc

    5. 在Struts、Spring和Hibernate集成中,Spring通常作为容器管理Struts的Action,可以通过scope="prototype"确保每个请求创建一个Action实例以实现线程安全。同时,Spring的HibernateTemplate提供了一组简化数据访问...

    spring经典面试题

    - **PlatformTransactionManager**:这是Spring提供的事务管理基础接口,其具体实现类如`DataSourceTransactionManager`负责具体的事务管理。 #### 编程式事务管理 - **灵活性**:编程式事务管理允许开发者在代码...

    跟我学spring3(8-13)1

    - **9.3 编程式事务**:展示了如何通过编程方式控制事务,如使用TransactionTemplate和@Transaction注解。 - **9.4 声明式事务**:讨论了基于AOP的声明式事务管理,包括@Transactional注解的使用,以及在XML配置中...

    在SSH框架中加入事务支持

    在加入事务支持的过程中,Struts并不直接参与事务管理,但可以通过Action类的Service注入来调用Spring管理的事务方法。 总结来说,SSH框架中的事务支持主要由Spring提供,通过声明式或编程式的方式实现。Spring 2.0...

Global site tag (gtag.js) - Google Analytics