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管理事物的实现详解的主要内容,如果未能解决你的问题,请参考以下文章

spring详解——事物管理

可能是最漂亮的Spring事务管理详解

spring 中的事物管理问题

创业管理-易学实用的创业真知

SpingAOP源码研究

一文解析Spring事务管理详解;通俗易懂,轻松掌握!