Spring事务Transaction配置的五种注入方式详解
来源:互联网 发布:java递归查询父节点 编辑:程序博客网 时间:2024/09/21 11:25
代码下载地址:http://www.zuidaima.com/share/1828220435860480.htm
原文:Spring事务Transaction配置的五种注入方式详解
前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。
总结如下:
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。
DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager。
具体如下图:
根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:
第一种方式:每个Bean都有一个代理
第二种方式:所有Bean共享一个代理基类
第三种方式:使用拦截器
第四种方式:使用tx标签配置的拦截器
第五种方式:全注解
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
02
<beans xmlns=
"http://www.springframework.org/schema/beans"
03
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
04
xmlns:context=
"http://www.springframework.org/schema/context"
05
xmlns:aop=
"http://www.springframework.org/schema/aop"
06
xmlns:tx=
"http://www.springframework.org/schema/tx"
07
xsi:schemaLocation="http:
//www.springframework.org/schema/beans
08
http:
//www.springframework.org/schema/beans/spring-beans-2.5.xsd
09
http:
//www.springframework.org/schema/context
10
http:
//www.springframework.org/schema/context/spring-context-2.5.xsd
11
http:
//www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
12
http:
//www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
13
14
<context:annotation-config />
15
<context:component-scan base-
package
=
"com.bluesky"
/>
16
17
<tx:annotation-driven transaction-manager=
"transactionManager"
/>
18
19
<bean id=
"sessionFactory"
20
class
=
"org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
21
<property name=
"configLocation"
value=
"classpath:hibernate.cfg.xml"
/>
22
<property name=
"configurationClass"
value=
"org.hibernate.cfg.AnnotationConfiguration"
/>
23
</bean>
24
25
<!-- 定义事务管理器(声明式的事务) -->
26
<bean id=
"transactionManager"
27
class
=
"org.springframework.orm.hibernate3.HibernateTransactionManager"
>
28
<property name=
"sessionFactory"
ref=
"sessionFactory"
/>
29
</bean>
30
31
</beans>
此时在DAO上需加上@Transactional注解,如下:
01
package
com.bluesky.spring.dao;
02
03
import
java.util.List;
04
05
import
org.hibernate.SessionFactory;
06
import
org.springframework.beans.factory.annotation.Autowired;
07
import
org.springframework.orm.hibernate3.support.HibernateDaoSupport;
08
import
org.springframework.stereotype.Component;
09
10
import
com.bluesky.spring.domain.User;
11
12
@Transactional
13
@Component
(
" userDao "
)
14
public
class
UserDaoImpl
extends
HibernateDaoSupport
implements
UserDao {
15
16
public
List <User> listUsers() {
17
return
this
.getSession().createQuery(
" from User "
).list();
18
}
19
}
0 0
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring事务Transaction配置的五种注入方式详解
- Spring-Transaction 事务配置的五种实现方式
- Spring事务配置的五种方式
- Spring事务配置的五种方式
- Spring事务配置的五种方式
- ios 企业版ipa 服务器发布
- 10.List集合去重
- Swift 与OC之桥接文件
- linux配置nodejs环境
- C/C++ 编程计算2的100万次方(m的n次方),超长结果输出文件
- Spring事务Transaction配置的五种注入方式详解
- 正则表达式-匹配模式
- Rabbitmq集群高可用
- Tomacat 环境变量的设置
- python2.7:文件编码检测chardet 详解
- 扒一扒HTTPS网站的内幕
- iOS开发基础-UIButton的使用
- C++三大函数(The Big Three)
- 省市二级显示jquery