`
hiskyrisa
  • 浏览: 36815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Exception:Spring3.2 AOP 事务管理

阅读更多

Spring的配置文件中,事务配置如下:

<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" />
			<tx:method name="add*" propagation="REQUIRED"/> 
			<tx:method name="delete*" propagation="REQUIRED"/> 
			<tx:method name="update*" propagation="REQUIRED"/>
			<!--<tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Exception"/> 
				<tx:method name="preCommitTaskitem" propagation="NEVER"/> <tx:method name="preStartProcess" 
				propagation="NEVER"/> <tx:method name="isDisplayPostNode" propagation="NEVER"/> -->
		</tx:attributes>
	</tx:advice>
	<aop:config>
		<aop:pointcut id="allMethod" expression="execution(* com.student.service.*.*(..))" />
		<aop:advisor advice-ref="txAdvice" pointcut-ref="allMethod" />
	</aop:config>

 

其中更新等操作必须开启事务,若抛出Exception,则要求事务回滚。需要注意以下两点:

1、在service中,如果Exception被try、catch处理后,则Aop将不会再进行回滚处理。

2、service中的异常不能直接抛出去,Spring的Aop不识别java.lang.Exception,需要在service中重新抛出runtineException才可触发事务回滚。代码如下:

@Service
public class StudentService {
	@Autowired
	StudentDao studentDao;
	
	public Student add(Student student) throws RuntimeException {
		studentDao.add(student);
		studentDao.add(student);
		throw new RuntimeException("1");
	}
}

 

0
1
分享到:
评论

相关推荐

    spring aop切面拦截指定类和方法实现流程日志跟踪

    ### Spring AOP 实现流程日志跟踪 #### 一、背景与目的 在现代软件开发过程中,为了确保系统的稳定性和可维护性,通常会引入非功能性的需求来增强应用程序的功能,比如日志记录、安全控制等。这些需求往往不是业务...

    spring3.2+strut2+hibernate4

    spring3.2+strut2+hibernate4 注解方式。 spring.xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    SSH_struts1.3_hibnerate3.2_spring2.5框架整合开发

    在本项目中,我们将深入探讨Struts1.3、Hibernate3.2和Spring2.5的整合开发,以及如何在其中加入事务管理。 Struts1.3作为MVC(Model-View-Controller)框架,主要负责控制层的任务,它通过ActionServlet接收HTTP...

    Java Web整合开发王者归来

    面向切面编程(AOP)作为一种补充技术,能够更好地处理横切关注点,如事务管理、日志记录等,从而简化了程序设计。Spring框架作为Java领域的一个重量级框架,其AOP模块提供了强大的支持,使得开发者能够在不修改核心...

    Spring+Hibernate+Struts2

    Spring提供了强大的事务管理能力,可以轻松地集成到现有的代码中。 **4.1 配置事务管理** 在`applicationContext.xml`中配置事务管理器,并定义事务规则。 ```xml &lt;!-- applicationContext.xml 事务管理配置示例 ...

    poi导入导出及spring

    Spring框架的核心特性包括依赖注入(DI)、面向切面编程(AOP)以及各种模块化的支持,如Web MVC、事务管理、数据访问等。 **3.2 POI与Spring的集成方式** - **使用Spring管理POI对象:** 在Spring容器中定义POI...

    mybatis-spring-1.0.0-中文指南

    Spring 支持两种事务管理方式:容器管理和编程式管理。容器管理通过 AOP 实现,通常更加方便,适用于大多数情况。 ##### 4.3 编程式事务管理 对于需要更精细控制的情况,可以使用编程式事务管理。这种方式需要在...

    用spring、Hibernate、Struts组建轻量级架构

    Spring提供了对Hibernate的支持,包括事务管理和Session管理等。 #### 结论 通过上述分析,我们可以看到Spring、Hibernate和Struts这三个技术框架各自的优势以及它们之间的互补性。结合使用这些框架,可以构建出既...

    高效率spring+struts+hibernate分页算法

    它利用了Spring的配置管理和事务管理能力、Struts的MVC模式以及Hibernate的对象关系映射特性,实现了高效稳定的分页功能。在实际开发中,可以根据具体需求调整这些类和接口的设计,以更好地满足项目的要求。

    Struts2+spring2+hibernate3实例源码-java源码

    - **Spring2**:一个轻量级的控制反转(IoC)和面向切面(AOP)容器,可以管理整个应用程序的生命周期,实现业务逻辑与底层服务的解耦。 - **Hibernate3**:一个全功能的对象关系映射框架,能够将Java对象映射到...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0  本文...

    Java程序员面试宝典

    - **面向切面编程(AOP):** 提供了强大的面向切面编程能力,可以用来实现日志记录、事务管理等功能。 **5.2 MyBatis:** - **ORM映射:** 通过配置文件或注解的方式,实现对象与数据库表之间的映射。 **5.3 ...

    Java工程师面试宝典

    - **事务管理**:提供声明式事务管理。 ##### 9.2 SpringMVC框架 - **控制器**:处理用户请求并返回视图。 - **视图解析器**:将视图名称解析为实际的视图对象。 - **前端控制器**:作为请求的唯一入口点。 #####...

    java反射机制与动态代理

    它允许我们在运行时动态地创建接口的代理类,从而可以在调用目标方法前后添加额外的功能,如日志记录、事务管理等。 ##### 3.1 动态代理原理 - **接口**:目标对象必须实现接口,因为Java动态代理是基于接口的。 -...

    java最新面试宝典

    - `Exception`与`Error`的区别。 - 自定义异常的创建方法。 - `try-catch-finally`语句块的使用。 - `throws`关键字的作用。 - `Throwable`类中的方法如`printStackTrace()`的用途。 - **面试考察要点:** - ...

    J2EE应用开发详解

    254 15.3 依赖注入 259 15.3.1 Constructor注入 259 15.3.2 Setter注入 261 15.3.3 Method注入 263 15.4 Spring AOP技术 266 15.4.1 装备(advices) 267 15.4.2 Spring AOP的传统用法 275 15.4.3 基于@AspectJ注释...

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

Global site tag (gtag.js) - Google Analytics