面向切面编程(AOP)完善spring的依赖注入(DI)功能,面向切面编程在spring中主要表现为两个方面
1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面
oop是静态的抽象,aop是动态的抽象,可以使得程序各个步骤之间有良好隔离性。
Spring只支持三种传导机制,分别是:
- (propagation=Propagation.REQUIRED)
内部事务,使用外部事务的配置策略(如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。) - requires_new
内部事务使用新的事务策略,与外部事务策略不同(新建事务,如果当前存在事务,把当前事务挂起。) - requires_nest
事务中出现异常后,回滚到savepoints,而不是事务的起点(如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。)
实例:
@Transactional(propagation=Propagation.REQUIRED)
@Transactional(readOnly=true)(只读性事务)