1, Spring bean 定义
spring bean 定义可能包含大量的配置信息,包括容器相关的信息(比如初始化方法,静态工厂方法
等)、构造函数参数、属性等。如果两个bean之间的配置信息大同小异,可采用bean的继承来减少重
复配置工作。子bean定义可以从父bean定义继承部分配置。它也可覆盖一些配置,或者添加一些配置
。使用继承配置可以节省很多输入工作,实际上就是一种模板形式。
spring中事务配置中就有这样例子,为了使用事务只要父配置了事务代理就可以了,所有需要事务的
bean只要继承父就可以了。说到这个就在多说几句,父bean通常不需要实例化的,而仅仅作为子bean
定的的模板使用;而ApplicationContext默认预初始化所有的singleton bean。为了阻止父bean被预
初始化,可以使用abstract属性设置父bean为抽象bean。容器会忽略所有的抽象bean定义,预初始化
时不初始化抽象bean。
2, spring 事务管理
传统的J2EE开发者对事务管理可能采用两种策略
(1),全局事务:全局事务通常由应用服务器管理,使用JTA。全局事务可跨越多个事务性的资源,保证
在多个事务性资源间跨越时资源一致性。
(2),局部事务:局部事务和特定资源相关,如,一个和JDBC链接关联的事务。该事务尽能保证对该
JDBC连接数据库的一致性,对局部事务,应用服务器不需要参与事务管理,不能保证跨越多个资源的
事务正确性。
3,编程式事务
Spring 提供两种编程式的事务管理
(1)使用TransactionTemplate事务管理
(2)直接使用一个PlatformTransactionManager实现类管理事务。
两种编程式的事务都不需要与特定的事务API耦合,第一种更符合Spring模板式的编程模型,因此通常推荐采用第一种方式,第二种非常类似于JTA的UserTransaction的API编程,区别是减少了异常处理。
4,声明式事务
Spring的声明式事务是通过面向切面(AOP)实现。
(1)使用声明式事务管理
通常,通过TransactionPoxyFactoryBean为目标Bean生成Spring事务代理。当bean实例的方法需要事务管理时,采用TransactionPoxyFactoryBean来自目标bean生成事务代理。每个TransactionPoxyFactoryBean为一个具体的目标bean生成代理对象,代理对象的方法改写了目标bean的方法,就是在目标bean的方法执行之前加入开始事务,在目标bean方法结束之后提交事务,遇到指定异常回滚事务。
定义事务代理bean模板
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="trans_*">PROPAGATION_REQUIRED</prop>
<prop key="query*">
PROPAGATION_REQUIRED,readOnly,-Exception
</prop>
<prop key="find*">
PROPAGATION_REQUIRED,readOnly,-Exception
</prop>
<prop key="load*">
PROPAGATION_REQUIRED,readOnly,-Exception
</prop>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
(2)根据BeanName自动创建事务代理
如果同一个应用中有很多目标bean需要生成事务代理,当然可以为每个目标bean额外配置一个TransactionPoxyFactoryBean bean.这样做的缺点是,配置文件相当臃肿而且难以维护,此时可以考虑使用自动事务代理。自动事务代理的思路是,当ApplicationContext初始化完成后,由上下文中的某个bean"后处理"每个目标bean,为这些目标bean生成事务代理。
能为目标bean执行"后处理"的bean必须实现BeanFactoryPostProcessor接口,ApplicationContext完成初始化后,会自动初始化所有实现BeanFactoryPostProcessor接口的bean,并且让它“后处理”其他bean.Spring提供BeanFactoryPostProcessor的实现类BeanNameAutoPoxyCreator,BeanNameAutoPoxyCreator可以用来处理ApplicationContext中其他bean,方法是通过名称来识别,并且把他们用事务代理包装起来。BeanNameAutoPoxyCreator生成的事务代理,和使用TransactionPoxyFactoryBean生成的事务代理基本一致。
定义事务拦截bean
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="TransactionManager" />
<property name="transactionAttributes">
<props>
<prop key="create*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="delete*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="update*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="get*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
次配置关键在两个bean
TransactionInterceptor
BeanNameAutoProxyCreator
(3)基于注释式事务代理配置
分享到:
相关推荐
在准备整合Spring之前,也在网上看了...不然这些肯定是java方面的常识而已。楼主还是一步一步的来吧,感觉Spring操作Hibernate还是离不开DataSource,SessionFactory,Transaction这几个要素。 详细说明看我的博客文章。
用Springboot 2.2.2.RELEASE,Spring Cloud Hoxton.SR1 搭建的最基本的微服务架构demo,供初学者学习springcloud使用,
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构必备] Spring cloud 微服务核心组件集 mica v1.1.1 发布相关的知识,希望对你有一定的参考价值。 mica(云母) mica 云母,寓意为云服务的核心...
此压缩包中包含平时开发涉及的API帮助文档,比如:JDK_API_1_6_zh_CN 、spring2[1].0中文开发参考手册、struts2中文教程、Hibernate中文API、JScript API、jQuery 1.4中文手册、网页设计配色常识、CSS样式表等等
本套课程由CSDN学院与咕泡学院共同打造,主要会围绕Spring Boot初遇、基本常识、注解和源码分析以及进阶4个方面进行讲解。 即使你之前从来没有用过Spring Boot也没关系,课程会带领你从0到进阶一步步提升,让你对...
通设计软件,了解的网页开发流程、前端代码(代码编辑软件)和网站优化、开发、后台数据处理常识以及相关政策法规、时事新闻 详细功能: 1.能够与互联网进行交互 2.能够实现网页登录注册及验证 3.实现对青少年网络...
第2章 开发环境与技术 3 2.1 MYSQL数据库 3 2.2 vue技术 3 2.3 Spring Boot框架 4 第3章 系统分析 6 3.1 可行性分析 6 3.1.1 技术可行性 6 3.1.2 经济可行性 6 3.1.3 操作可行性 6 3.2 系统流程 7 3.2.1 操作流程 7 ...
用户进入到系统首页,可以查看首页、充电桩、充电常识、个人中心、后台管理等内容进行操作 1.2用户后台管理 用户登录进入车辆充电桩管理系统可以对首页、个人中心、充电桩报修管理、维修回复管理等功能进行详细操作...
本系统使用MySQL关系型数据库进行数据存储,后台采用当下最流行的SpringBoot(整合Spring 、Spring MVC、MyBatis三大框架)进行开发,前端 采用H 微信小程序进行开发。综合来看,体育馆预约小程序的优点还是显而易见...
通过该网站展示了机构设置、政策法规、办事指南、电子刊物、新闻、学习园地、问题集锦、养生保健、生活小常识、旅游简介等系列内容的介绍。同时您也可以利用电子信箱经济而又快捷地与外界进行各种信息沟通。 ASP简介
## 后台框架: SSM(SpringMVC + Spring + Mybatis) ## 1.用户登录模块: 未注册用户只能浏览系统中的常规信息,如宠物医院简介,宠物喂养基本常识等基础类信息 注册模块: 注册信息(宠物昵称,类别(拉布拉多,...
(2)后台管理员有操作所有模块的权限:进行对车辆档案(车辆信息、违章信息、驾驶员信息、维修信息、车辆报废),用户管理(用户身份和状态的修改、用户查找、用户头像管理),前台公告,前台信息模块(交通新闻,...
(2)后台管理员有操作所有模块的权限:进行对车辆档案(车辆信息、违章信息、驾驶员信息、维修信息、车辆报废),用户管理(用户身份和状态的修改、用户查找、用户头像管理),前台公告,前台信息模块(交通新闻,...
100道逻辑思维趣题,ajax框架:dwr》实战(包括整合),Ajax中英文对照手册,CSS2 – Quick Reference Guide,css滤镜,css样式,DHTML默认行为手册,DOM文档对象模型手册,JavaScript源码大全 v1.0,javascript资料(源码,...
Java基础、Java内存模型、Java面向对象、Java集合体系、接口、Lambda表达式、类加载机制、内部类、代理类、Java并发、JVM、Java后端编译、Spring 3. Go defer底层原理、goroutine、select实现机制 4. 算法学习 数组...
(2)后台管理员有操作所有模块的权限:进行对车辆档案(车辆信息、违章信息、驾驶员信息、维修信息、车辆报废),用户管理(用户身份和状态的修改、用户查找、用户头像管理),前台公告,前台信息模块(交通新闻,...
主要包括:首页,个人中心,用户管理,保健品分类管理,药品分类管理,药品信息管理,疫情常识管理,保健品管理,系统管理,订单管理等功能的管理系统。 药品管理:系统提供药品信息管理功能,包括药品名称、药品...
后台开发框架采用Spring Boot,数据库采用MySQL,页面结合WXML、WXSS、JavaScript与AJAX等技术完成。 根据项目需求分为微信端和后台管理端,(1)~(7)为微信小程序主要功能,(8)~(11)为后台管理网站主要功能,...