SpingIOC管理事物的实现详解
Posted sihai_1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpingIOC管理事物的实现详解相关的知识,希望对你有一定的参考价值。
总结一下SpringIOC容器从开启事物到管理事物的开发步骤以及一些具体的实现步骤:
工程结构目录如下图,这里不一一详细说明其他各类之间的关系:
基于注解的方式声明事物和IOC容器管理事物:
<!-- 配置事物管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 指定基于注解的方式 配置-->
<tx:annotation-driven transaction-manager="txManager" />
一,beans.xml配置如下:
<!-- 自动扫描与装配bean -->
<context:component-scan base-package="cn.lsh.spring"/>
<!-- 导入外部的配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="$driver"></property>
<property name="JdbcUrl" value="$url"></property>
<property name="user" value="$username"></property>
<property name="password" value="$password"></property>
<property name="minPoolSize" value="3"></property>
<property name="maxPoolSize" value="10"></property>
</bean>
<bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置事物管理器 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 指定基于注解的方式 配置-->
<tx:annotation-driven transaction-manager="txManager" />
</beans>
二,新建UserService接口只实现了一个save()方法
public interface UserService
void save();
三,新建UserServiceImpl实现UserService接口:
//声明名称为userService的bean对象(如果没有指定,则默认为类的名称)
@Service("userService")
public class UserServiceImpl implements UserService
@Resource//注入到容器中
private UserDao userDao;
@Transactional//声明此方法开启事物(置于类上,则说明该类所有的方法开启事物)
public void save()
userDao.addUser(new User());
int i=1/0; //报异常回滚
userDao.addUser(new User());
四,新建测试类:
public class TestDemo3
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
//获取名称为userService的bean对象
UserService service = (UserService)ac.getBean("userService");
@Test
public void test1()
service.save();
以上代码为SpringIOC容器管理事物具体实现步骤(基于注解的方式),与JDBC和Hibernate相比较,IOC容器管理事物要简单易学!
以上是关于SpingIOC管理事物的实现详解的主要内容,如果未能解决你的问题,请参考以下文章