import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
 
@Service
public class MyService {
 
    // 使用 REQUIRED 传播机制,如果当前存在事务,则加入该事务,如果不存在,则创建一个新的事务
    @Transactional(propagation = Propagation.REQUIRED)
    public void someTransactionalMethod() {
        // 方法实现...
    }
 
    // 使用 SUPPORTS 传播机制,即使当前存在事务,该方法也可以不参与事务
    @Transactional(propagation = Propagation.SUPPORTS)
    public void someSupportsMethod() {
        // 方法实现...
    }
 
    // 使用 MANDATORY 传播机制,如果当前存在事务,则加入该事务,如果不存在,则抛出异常
    @Transactional(propagation = Propagation.MANDATORY)
    public void someMandatoryMethod() {
        // 方法实现...
    }
 
    // 使用 REQUIRES_NEW 传播机制,创建一个新的事务,如果当前存在事务,则挂起当前事务
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void someRequiresNewMethod() {
        // 方法实现...
    }
 
    // 使用 NOT_SUPPORTED 传播机制,该方法不会参与事务,如果当前存在事务,则挂起当前事务
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void someNotSupportedMethod() {
        // 方法实现...
    }
 
    // 使用 NEVER 传播机制,如果当前存在事务,则抛出异常,该方法不会参与事务
    @Transactional(propagation = Propagation.NEVER)
    public void someNeverMethod() {
        // 方法实现...
    }
 
    // 使用 NESTED 传播机制,如果当前存在事务,则嵌套事务执行,否则创建一个新的事务
    @Transactional(propagation = Propagation.NESTED)
    public void someNestedMethod() {
        // 方法实现...
    }
}这个代码示例展示了如何在Spring框架中使用不同的事务传播机制。每个方法都用@Transactional注解标记,并指定了传播行为。通过这种方式,开发者可以根据需要选择合适的传播策略,以确保事务用法的正确性和性能的最优化。