kkkk如题!
废话不多说了,直接上配置,配置如下,各位看了便知!
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location"><value>classpath:jdbc.properties</value></property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="url"><value>${jdbc.url}</value></property>
<property name="driverClassName"><value>${jdbc.driver}</value></property>
<property name="username"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
<property name="defaultAutoCommit" value="false"></property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor" >
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames"> <value>*Service</value></property>
<property name="interceptorNames"><value>transactionInterceptor</value></property>
</bean>
<bean id="sqlMapClientFactory" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property>
<property name="dataSource" ref="dataSource"></property>
<property name="lobHandler">
<bean class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>
</property>
</bean>
<bean id="sqlMapTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClientFactory" />
<property name="exceptionTranslator">
<bean class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource" ref="dataSource" />
</bean>
</property>
</bean>
</beans>
daoContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="employeeDao" class="mypackage.dao.impl.EmployeeDaoImpl">
<property name="sqlMapTemplate">
<ref bean="sqlMapTemplate" />
</property>
</bean>
</beans>
serviceContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="employeeService" class="mypackage.service.impl.EmployeeServiceImpl">
<property name="employeeDao"><ref bean="employeeDao" /></property>
</bean>
</beans>
在EmployeeServiceImpl中故意让程序抛出了exception,但是事务仍然提交了:-(
分享到:
相关推荐
根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...
当该方法执行时,Spring会自动处理事务的开启、提交或回滚,这极大地简化了事务管理。 在“TransactionDemo”项目中,以下是一些关键知识点: 1. **配置文件**:通常包括Spring的bean定义文件(如`...
当我们谈论"spring+ibatis声明式事务Demo"时,我们关注的是如何在Spring框架中利用iBatis实现声明式事务管理。 声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、...
这样,一旦发生异常,Spring会自动回滚事务,保证数据一致性。 最后,关于Spring与Struts2的集成。Spring作为应用框架,负责依赖注入和事务管理;Struts2则作为MVC框架,处理请求和视图。结合Ibatis,我们可以创建...
根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...
由于配置了事务管理,当出现异常时,Spring会自动回滚事务。 ```java @Service public class UserService { @Autowired private UserMapper userMapper; @Transactional public void addUser(User user) {...
6. **事务管理**:Spring 提供了声明式事务管理,可以在配置文件中设置事务边界,由 Spring 自动处理事务的开启、提交、回滚等操作。在整合 iBATIS 时,通常会使用 Spring 的 PlatformTransactionManager 接口。 7....
这种方式的优点在于,Spring可以帮助管理事务,提供统一的异常处理,而iBatis则负责SQL的执行,两者结合可以避免直接使用JDBC时的繁琐代码。 在实际开发中,还可以考虑使用MyBatis的动态SQL功能,如if标签、choose...
只需在需要事务的Service层方法上添加@Transactional注解,Spring会自动管理事务的开始、提交或回滚。 5. **高可用性和负载均衡**:在Spring中,可以使用Ribbon或Hystrix组件实现对MySQL集群的负载均衡。这些组件会...
这样,当发生异常时,可以自动回滚事务,保证数据的一致性。 6. **DAO层设计**:在业务逻辑层(Service)和数据访问层(DAO)之间,可以创建Mapper接口的实现类,这个实现类通常由Spring自动创建并通过@Autowired...
在集成Spring+iBatis+JOTM的环境中,Spring主要负责事务策略的配置和管理,iBatis则作为持久层框架,负责SQL的执行,而JOTM作为事务管理器,确保跨数据库的事务一致性。 1. **环境搭建** - 首先,确保安装了JDK ...
然而,Ibatis不直接支持JTA,而是依赖于Spring框架或MyBatis-Spring集成来实现事务控制。 描述中提到的“NULL”可能表示这篇博文详细讨论了如何在Ibatis中集成Spring进行事务管理。Spring框架提供了一种声明式事务...
同时,Spring的事务管理确保了数据的一致性,比如在处理数据库操作时进行自动的回滚和提交。 **iBatis** 是一个持久层框架,它简化了SQL操作,将SQL语句与Java代码分离。在本demo中,iBatis可能会被用来执行员工...
通常,这样的测试会模拟不同的事务场景,例如并发更新、异常处理等,以确保在各种情况下事务都能正确地进行提交或回滚。 总的来说,这个项目展示了如何利用Spring的事务管理能力,结合JOTM作为事务协调器,以及...
在构建Java Web应用程序时,Spring MVC、Spring和iBatis是三个非常重要的框架。Spring MVC作为Spring框架的一部分,主要用于处理Web请求,Spring则提供全面的依赖注入和面向切面编程功能,而iBatis则是一个优秀的...
此外,Spring还提供了对异常处理的支持,当发生未检查异常(如NullPointerException)时,Spring会自动回滚事务;而对于受检查异常(如DataAccessException),是否回滚则取决于事务的配置。 总的来说,Spring宠物...
编程式事务管理需要在代码中手动开启、提交和回滚事务,而声明式事务管理则依赖于Spring等框架进行配置。 **3. 编程式事务管理** 在Java中,你可以使用`java.sql.Connection`对象来管理事务。在业务逻辑代码中,你...
4. 事务管理:Spring的TransactionManager负责事务的开启、提交、回滚等操作。 5. 编写Mapper XML文件:定义SQL语句和结果映射,与Mapper接口对应。 6. 使用注解或XML编写SQL:在Mapper接口的方法上使用@Select、@...
同时,Spring的事务管理能力确保了对数据库操作的原子性和一致性,通过声明式事务管理,可以在XML配置文件中轻松设置事务边界,如开启、提交、回滚等操作。 Ibatis是轻量级的持久层框架,它简化了JDBC的繁琐工作,...
- 事务管理器(TransactionManager)配置,如`PlatformTransactionManager`,它与iBatis的数据源配置结合,控制事务的开始、提交和回滚。 - 数据源(DataSource)配置,定义如何连接到数据库。 - iBatis的...