你能定义声明式的回滚规则。应用程序开发者常想要事务能够在遇到任何异常时回滚,但EJB在遇到未捕获的应用程序异常时不会自动回滚(仅仅在未检查的异常和其他Throwable异常还有“系统”异常时才回滚)。Spring的事务管理允许你声明式地指定哪个异常和子类是应该引起自动回滚的。默认的行为和EJB一样,但你可以指定经检查异常和未经检查异常一样回滚。这在最小化可编程回滚需要上有很大好处,而这可编程回滚也建立了对Spring事务API的依赖(就像EJB可编程回滚建立对EJBContext的依赖一样)。
底层Spring事务抽象支持保存点(如果底层事务基本结构支持的话),所以Spring的声明性事务管理能支持嵌套事务,和EJB CMT特有的传播模式(Spring支持和EJB一样的语义)。因而,举例来说,如果你在Oracle上执行JDBC操作,你能通过Spring使用声明性嵌套事务。