`

本地事务系列之五:使用Transactional注解

阅读更多
AOP的配置稍显复杂,通过@Transactional注解,同样可以实现:

1. 在需要事务的类或方法上加@Transactional

   如果是类上加注解,该类的所有public方法都会应用事务
   如果是方法上加注解,该方法会应用事务。
   在接口上加注解有风险,如果使用CGLIB(类代理)将不会启用事务。

2. 开启注解事务开关:<tx:annotation-driven />

FruitShop实现:
public class AnnotationTxFruitShop extends JdbcDaoSupport implements FruitShop {

	@Transactional // 可以设置传播级别、隔离级别、超时、只读、回滚策略
	@Override
	public boolean purchase(int fruitId, String userName, int count) {
		// 此处和系列之四的AopTxFruitShop代码相同
	}
}


beans-fruitshop-@.xml文件:
  <tx:annotation-driven transaction-manager="txManager" />

  <bean id="annotationTxFruitShop" class="com.john.tx.service.impl.AnnotationTxFruitShop">
  	<property name="dataSource" ref="dataSource" />
  </bean>

  <!-- dataSource, txManager和之前的相同 -->


测试类和之前的类似:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/beans-fruitshop-@.xml" })
public class AnnotationTxFruitShopTest {

	@Resource(name = "annotationTxFruitShop")
	FruitShop annotationTxFruitShop;

	@Test
	public void test() {
		...
	}
}



附:
Spring底层也是通过AOP来实现对@Transactional注解事务的支持:
  • 大小: 15.5 KB
分享到:
评论

相关推荐

    Java事务设计模式_java_事务设计模式_

    例如,使用Spring的PlatformTransactionManager接口,通过TransactionTemplate或直接在Service层使用@Transactional注解进行事务管理。 3. **声明式事务模型**:这是更推荐的方式,事务管理与业务逻辑分离,使得...

    ssh上传文件,测试事务

    5. **事务管理注解**:在需要进行事务管理的业务方法上添加@Transactional注解,指定事务的传播行为、隔离级别等属性。 6. **事务测试**:编写测试用例,模拟各种异常情况,如网络中断、数据库错误等,检查事务是否...

    JavaAnd数据库事务[整理].pdf

    3. Spring事务管理实例:通过@Transactional注解,可以在方法级别声明事务,实现事务的自动开始、提交或回滚。 五、EJB事务 Enterprise JavaBeans(EJB)也提供了事务管理服务。EJB容器会根据Bean的方法调用自动...

    Java+And+数据库事务.pdf

    使用@Transactional注解可以声明式地开启和管理事务。 2) **对Hibernate/JPA事务的支持**:Spring同样支持ORM框架如Hibernate和JPA的事务管理,通过集成SessionFactory或EntityManagerFactory,Spring能够自动处理...

    SpringBoot整合多数据源,并实现本地分布式事务

    6. **编程模式**:在Spring Boot中,可以使用`@Transactional`注解标记方法,但为了支持分布式事务,需要额外的配置和编程模式,如使用Atomikos的UserTransaction接口来显式开始和结束事务。 三、实现读写分离 1. ...

    JAVA事务配置总结

    在Spring框架中,可以使用@Transactional注解简化事务管理,这种情况下,一个SessionFactory通常对应一个数据源,适合于简单的业务逻辑和单库应用。 接下来是“全局事务”或“分布式事务”,它跨越了多个数据库或...

    多数据源事务解决方案,单应用多数据库保证事务

    Spring的@Transactional注解是关键,它允许我们在方法级别声明事务边界。在多数据源场景下,我们需要扩展这个注解,指定事务应该在哪一个数据源上运行。这通常通过自定义注解和AOP(面向切面编程)实现。例如,可以...

    基于Springboot+ActiveMQ事务==本地事件表+activemq.zip

    为了保证事务的原子性,Springboot可以集成Spring Transactions,使用@Transactional注解来开启事务管理。在服务端,当接收到消息后,本地事务会开始,执行业务逻辑。如果一切顺利,事务提交,消息确认;否则,事务...

    spring 结合druid和hibernate使用jta配置分布式事务

    在事务管理方面,Spring支持编程式和声明式事务,可以处理单个数据库的本地事务,以及跨多个数据源的分布式事务。 `Druid` 是阿里巴巴开源的一个高性能、可扩展的数据源连接池。它除了提供基础的连接池功能外,还...

    第五章:Spring AOP 在 Spring Framework 内部应用1

    Spring提供了强大的事务管理机制,包括@EnableTransactionManagement注解来启用事务管理,以及@Transactional注解用于标记需要进行事务控制的方法。Spring还提供了一系列接口和类,如PlatformTransactionManager负责...

    JAVA设计模式之事务处理.pdf

    然而,在许多实际应用场景中,应用往往只需要处理单一的数据源(通常是数据库),这时使用本地事务(例如JDBC提供的事务管理功能)就足够了。 #### 二、事务管理的重要性 事务处理的核心在于确保一系列数据库操作...

    WEB开发相关的Transaction管理战略

    - 实现方法:可以采用本地事务模型,通过编程式事务控制每个操作的事务边界。 - 优势:简单易行,易于理解和维护。 2. **复杂事务处理**: - 使用场景:涉及多个资源管理器的数据操作。 - 实现方法:采用编程式...

    事物管理javaweb.zip

    8. **补偿事务(Saga)**:在微服务架构中,由于单个事务可能涉及多个服务,因此出现了Saga模式,它通过一系列小的本地事务来实现长事务,每个小事务称为一个补偿操作,如果前面的操作失败,后续的补偿操作将回滚...

    分布式事务.zip

    5. 实现本地事务:在业务代码中,每个服务内部需要保证本地事务的正确性,这通常通过编程式事务管理或者声明式事务管理(如Spring的@Transactional)实现。 6. TCC补偿操作:如果采用TCC模式,需要为每个业务操作...

    javaSpring-经典概念题-试题-中文

    - **Java注解**:使用`@Transactional`注解声明事务边界。 - **编程方式**:通过`PlatformTransactionManager`接口管理事务。 #### 十、Spring Boot **Spring Boot**是一个基于Spring框架的快速开发框架,具有以下...

    Spring事务处理流程和原理详解

    1. **事务配置**:在Spring配置文件中,配置事务管理器,如DataSourceTransactionManager(对应本地事务)或JtaTransactionManager(对应全局事务)。 2. **事务传播行为**:定义方法之间的事务传播规则,如...

Global site tag (gtag.js) - Google Analytics