一、在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框架的核心概念、主要模块以及如何在实际项目中运用Spring来解决具体问题。对于希望深入学习Spring框架的开发者来说,这是一本不可或缺的...
书中详细介绍了如何使用XML、注解以及Java配置方式来实现依赖注入。 另外,Spring的AOP(Aspect-Oriented Programming,面向切面编程)功能允许开发人员定义横切关注点,如日志、事务管理等,从而将这些通用功能与...
综上所述,在SSH框架中使用Spring的主要好处包括: 1. 通过IoC和DI降低组件间的耦合度,提高代码的可维护性和可扩展性。 2. 利用AOP实现事务管理,减少事务处理的代码量,增强事务控制能力。 3. 提供了诸如日志、...
- **配置Struts**:在struts.xml中,配置Action时,可以使用Spring插件来指定Action类在Spring中的bean ID,这样Struts会通过Spring容器获取Action实例。 - **Action类的处理**:Action类不再直接实例化,而是由...
在SSH框架中,这意味着当Struts的Action需要调用Service层的方法时,Spring会自动创建Service实例,并将其注入到Action中,而无需Action自行创建或查找Service。这种模式不仅降低了组件间的耦合,还使得单元测试变得...
ORM(Object-Relational Mapping)是将数据库关系模型与对象模型进行映射的技术,Spring提供了对多种ORM框架如Hibernate、iBATIS和JPA的集成支持,使得开发者可以方便地在Java应用中使用面向对象的方式来操作数据库...
- **整合优势:** 通过 Spring 可以轻松地管理和注入 Struts 中的 Action 对象以及其他服务对象。 **Spring 与 Hibernate 集成:** - **数据访问层:** 使用 Spring 的 DAO 支持,可以方便地集成 Hibernate 进行...
Spring与Struts结合,可以利用Spring的依赖注入(DI)和AOP特性增强Struts的功能,同时在Struts的动作(Action)和业务服务之间实现事务控制。这通常需要配置Struts的拦截器,以使Spring的事务管理生效。 总的来说...
- **10.2 集成Struts1.x**:详细讲述了Spring与Struts1.x的整合,包括Action和ModelDriven模式的使用。 - **10.3 集成Struts2.x**:解释了Spring与Struts2.x的配合,包括使用Struts2的拦截器和Spring的依赖注入。 ...
- Struts的Action支持类,可以利用Spring的依赖注入特性。 #### 十、Spring整合应用 Spring框架可以与其他多种技术进行整合,例如: 1. **Spring和Log4j** - 日志框架整合,通过Spring管理日志配置。 2. **...
3. **8.3 集成iBATIS**:Spring与iBATIS的集成主要通过SqlMapClientTemplate来实现,使得在Spring环境中可以方便地使用iBATIS的XML映射文件和动态SQL。 4. **8.4 集成JPA**:Spring支持JPA(Java Persistence API)...
- **8.2 集成Hibernate3**:详细讲解了如何在Spring中配置和使用Hibernate,包括SessionFactory的创建、事务管理、HQL查询等。 - **8.3 集成iBATIS**:展示了如何将Spring与iBATIS结合,包括SqlMapConfig.xml的...
- 在 Spring 中使用 `scope="prototype"` 来管理 Action 的生命周期,确保每个 HTTP 请求都有一个新的 Action 实例。 #### 4. Struts 如何实现 MVC 模式 Struts 采用 MVC 架构模式来组织应用程序结构: - **Model...
5. 在Struts、Spring和Hibernate集成中,Spring通常作为容器管理Struts的Action,可以通过scope="prototype"确保每个请求创建一个Action实例以实现线程安全。同时,Spring的HibernateTemplate提供了一组简化数据访问...
- **PlatformTransactionManager**:这是Spring提供的事务管理基础接口,其具体实现类如`DataSourceTransactionManager`负责具体的事务管理。 #### 编程式事务管理 - **灵活性**:编程式事务管理允许开发者在代码...
- **9.3 编程式事务**:展示了如何通过编程方式控制事务,如使用TransactionTemplate和@Transaction注解。 - **9.4 声明式事务**:讨论了基于AOP的声明式事务管理,包括@Transactional注解的使用,以及在XML配置中...
在加入事务支持的过程中,Struts并不直接参与事务管理,但可以通过Action类的Service注入来调用Spring管理的事务方法。 总结来说,SSH框架中的事务支持主要由Spring提供,通过声明式或编程式的方式实现。Spring 2.0...