JdbcTemplate没有内置事务机制
可以使用Spring的AOP代理机制来实现
具体实现:
配置文件
<!-- 数据源对象 -->
<bean id="datasrc" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
<property name="url" value="jdbc:mysql://localhost:3306/spring"></property>
</bean>
<!-- JdbcTemplate对象 -->
<bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="datasrc"></property>
</bean>
<!-- 实现类的对象 -->
<bean id="userdaoimpl" class="com.dowebber.dao.impl.UserDaoImpl">
<property name="jdt" ref="jdbctemplate"></property>
</bean>
<!-- 配置transactionManager -->
<bean id="transmgr" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasrc"></property>
</bean>
<!-- 配置代理对象 -->
<bean id="userdaoproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="target" ref="userdaoimpl"></property>
<property name="proxyInterfaces" value="com.dowebber.dao.UserDao"></property>
<property name="transactionManager" ref="transmgr"></property>
<property name="transactionAttributes">
<props>
<prop key="*User">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
transactionAttributes:如果配置多个事务中间可以用逗号分开
-Exception:表示代码出现异常,事务不提交
+Exception:表示代码出现异常,事务也提交
<prop key="*User">PROPAGATION_REQUIRED,-Exception</prop>
<1>:如果key的值为*,说明所有的方法都加事务
<2>:也可以通配匹配 *User
测试?? 不知如何测试...
分享到:
相关推荐
例如,我们可以看到使用`<aop:config>`标签来定义切面,`<tx:annotation-driven>`来启用基于注解的事务管理。 ```xml <aop:config> <aop:aspect id="transactionAspect" ref="transactionManager"> <!-- 定义...
6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.3.1. 切入点指定者的支持 6.2.3.2. 合并切入点表达式 6.2.3.3. 共享常见的切入点...
在Spring的配置文件中,我们经常会看到xsd文件的身影,例如`spring-jdbc-4.2.xsd`,它是Spring JDBC模块的XML Schema定义文件,用于验证和解析与数据库交互的相关配置。 `spring-jdbc-4.2.xsd`是Spring 4.2版本的...
这种方式将业务逻辑与事务管理代码分离,使得代码更加清晰且易于维护。 ##### 1.2 配置Spring声明式事务 要启用Spring的声明式事务管理,通常需要做以下几步配置: - **配置数据源**:首先需要配置数据源,以便...
2. **Spring AOP与事务管理** Spring提供了声明式事务管理,这使得事务管理代码不再需要硬编码到业务逻辑中,而是通过配置来实现。AOP代理可以在方法调用前后自动执行事务相关的操作,如开启、提交、回滚事务,大大...
例如,我们可以创建一个通知(Advice)来记录事务日志或处理其他与事务相关的任务。 在实际项目中,声明式事务管理更为常见,因为它降低了代码的耦合度,提高了可维护性。要启用声明式事务管理,我们需要在Spring...
Spring通过AOP代理在合适的时候调用Hibernate的Session方法,控制事务的开启、提交、回滚等行为。以下是一段示例代码,展示了如何在Spring中配置Hibernate事务管理: ```xml <bean id="sessionFactory" class="org....
最后,`tx.dtd`涉及到事务管理,如`<tx:annotation-driven>`用于启用基于注解的事务管理,`<tx:advice>`定义了事务处理策略。 以上就是Spring各主要模块的DTD文件所涵盖的知识点,它们共同构建了Spring框架的强大...
在Spring 2.x框架中,事务管理是其核心特性之一,尤其与面向切面编程(AOP)结合使用时,可以实现高效的事务控制。本文将深入探讨Spring如何通过AOP来实现事务管理,并以`applicationContext.xml`配置文件为例,阐述...
此外,Spring还提供了大量的数据访问工具,如JDBC抽象层和ORM集成。 JdbcTemplate 是Spring框架的一部分,它为JDBC操作提供了简化和模板化的API,使得开发者能够更安全、更便捷地进行数据库操作。使用JdbcTemplate...
- Annotation-driven配置:在Spring应用上下文中启用注解驱动的事务管理。 理解并熟练运用Spring声明式事务管理,可以有效提高应用程序的事务处理能力,同时降低事务管理的复杂性。通过合理的配置,可以确保数据的...
实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...
- 在Struts配置文件中,启用Spring插件,并指定Spring配置文件的位置。 4. **Action与Service交互**: - Action类通常只包含与用户交互的逻辑,而具体的业务逻辑则封装在Service层。Action通过调用Service的方法...
1. **配置Spring容器**:在Spring的配置文件(如`applicationContext.xml`)中,我们需要定义一个`<tx:annotation-driven>`元素,这将启用基于注解的声明式事务管理。同时,需要配置数据源(DataSource)和事务管理...
在Spring框架中,AOP主要用于处理系统中的横切关注点,如日志记录、事务管理、权限校验等,这些关注点通常分散在多个类的方法中,通过AOP可以将其集中管理。 **XML配置AOP** 在Spring早期版本中,AOP主要通过XML...
在Spring+Hibernate集成中,Spring通过AOP代理来处理事务。当我们在服务层的方法上添加@Transactional注解时,Spring会在方法执行前后自动处理事务的开始、提交、回滚等操作。如果方法执行过程中发生异常,Spring会...
4. **启用Spring的AOP代理**: 声明式事务管理基于Spring的AOP,因此需要开启AOP代理。这可以通过在配置文件中添加以下行来实现: ```xml ``` 这行配置表示Spring会扫描带有@Transactional注解的方法,并自动...
1. **引入依赖**:在`pom.xml`或`build.gradle`中添加对`spring-boot-starter-data-jpa`或`spring-boot-starter-aop`的依赖,前者适用于JPA或Hibernate的事务管理,后者用于AOP(面向切面编程)事务管理。...
当带有`@Transactional`注解的方法被调用时,Spring的代理会在方法执行前后插入事务相关的代码。如果方法正常结束,它会提交事务;如果抛出异常,它会回滚事务。 总之,这个“spring简单实例 事务回滚”案例为我们...