`

让Spring架构减化事务配置(5)

阅读更多

使用BeanClassTypeAutoProxyCreator
    3.1为了使用BeanClassTypeAutoProxyCreator,将为所有需要进行代理的类定一个接口。

<!---->package com.prs.application.ehld.biz.service; public interface BaseService ...{ }

    3.2 让需要代理的类实现或继承这个公共接口

<!---->package com.prs.application.ehld.sample.biz.service; public interface SampleService extends BaseService ...{ public void setUserInfoDAO(UserInfoDAO userInfoDAO); public void insertUserInfo(UserInfoDTO userInfo) throws BusinessServiceException; }

    3.3 配置事务代理

<!----> <!—定义拦截器--> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_SUPPORTS,readOnly</prop> <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop> <prop key="*">PROPAGATION_SUPPORTS,readOnly</prop> </props> </property> </bean>
<!----><!—定义类型自动代理创建器--> <bean id="autoClassTypeProxyCreator" class="com.prs.application.ehld.common.aotoproxy.BeanClassTypeAutoProxyCreator">
<property name="interceptorNames"> <value>transactionInterceptor</value> </property> <property name="classTypes"> <list> <value>com.prs.application.ehld.biz.service.BaseService</value> </list> </property> </bean>
<!----> <!—定义事务bean--> <bean id="com.prs.application.ehld.sample.biz.service.sampleService" class="com.prs.application.ehld.sample.biz.service.impl.SampleServiceImpl"> <property name="userInfoDAO" ref="com.prs.application.ehld.sample.integration.dao.userInfoDAO"> </property> </bean>

    效果:只需要定义BeanClassTypeAutoProxyCreator,把需要代理的类型BaseService作为classTypes的值。这样任何实现了BaseService接口的类都自动获得代理。使得程序员就像配置普通bean一样去配置一个需要事务代理的bean。使得程序员只需要去关心业务逻辑。而无需要去关注事务这些框架应该支持的事情。特别是当开发团队成员水平不一,或团队人员流动性大时,BeanClassTypeAutoProxyCreator就发挥了它的作用。一个好的架构设计应该对事务控制,异常处理,日志记录这些方面进行统一的规划和处理,才能保证系统的健壮性。
    采用Spring框架进行项目开发,我们在获得它的IOC等好处,同时给我们增加了维护太多配置文件的负担。应该尽量减少bean的定义,更多采用嵌套bean定义。否则将加大项目后期的维护成本。作为一个架构设计者更是应该把通用性比较强的方面进行统一规划。

1
分享到:
评论

相关推荐

    Spring声明式事务配置管理方法

    发布于2013-5-6项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring2.0AOP类库即可。添加方法:点击项目右键-&gt;BuildPath-&gt;Addlibrarys:打开AddLibraries对话框,然后选定...

    精通Spring(书签)

     Spring 2.5是迄今为止完美的Java EE架构级框架,全面深入、多维度演绎Spring 2.5的各个方面,本书蕴含作者多年Java EE研发实践及经验。  凝聚Java魅力,成就开发专家  看清Java万花的本质,从复杂的表象中寻找...

    精通spring--源代码

    对JavaEE5及Spring2.5进行了综述。包括Java EE5,步入Spring2.5,获得Spring2.5发布版和源码。启动Spring2.5使能项目  详细介绍Spring2.5核心技术。包括控制反转容器,面向切面编程  对DA0层集成技术进行了详细...

    基于Spring Authorization Server全新适配OAuth 2.1协议的企业级微服务架构和服务能力开发平台

    2022.0.4、Spring Cloud Alibaba 2023.0.0.0、Nacos 2.3.1 等主流技术栈开发的多租户系统,遵循SpringBoot 编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、...

    spring声明式事务管理

    3. 掌握整合spring和hibernate的持久化操作编程 4.掌握基于AOP的声明式事务编程 按照三层架构构建web项目,在业务层添加事务控制。 1.创建web project项目命名为aopweb 2.添加spring支持、hibernate支持 3.配置WEB...

    SpringColud1简易分布式

    SpringColud1简易分布式 ● cloud-config-server:配置服务器-(通过git获取配置) ● cloud-eureka-server:eureka注册服务器 ● cloud-simple-service:一个使用mybatis的数据库应用,服务端 ● cloud-simple-...

    spring.net中文手册在线版

    14.5.1.理解Spring.NET声明式事务管理的实现 14.5.2.第一个例子 14.5.3.Transaction特性的设置 14.5.4.通过AutoProxyCreator使用声明式事务 14.5.5.通过TransactionProxyFactoryObject使用声明式事务 14.5.6. 通过...

    基于Spring Cloud的进销存管理系统源码

    采用前后端分离的模式,微服务版本前端vue 后端采用Spring Boot、Spring Cloud & Alibaba。注册中心、配置中心选型Nacos,权限认证使用Redis。流量控制框架选型Sentinel,分布式事务选型Seata。 商品管理:商品类型...

    基于Spring Boot、Spring Cloud Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本

    基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本。若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。采用前后端...

    基于Spring BootSpring Cloud & Alibaba的分布式微服务架构权限管理系统同时提供了 Vue

    基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本。若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。采用前后端分离的模式,微服务版本前端(基于...

    spring boot 全面的样例代码

    - chapter1:[基本项目构建(可作为工程脚手架),引入...由于Spring Cloud偏宏观架构,Spring Boot偏微观细节,内容上越来越多,为了两部分内容不互相干扰,所以迁移Spring Cloud内容到:[SpringCloud-Learning项目]...

    基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统

    基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统。 采用前后端分离的模式,微服务版本前端(基于 RuoYi-Vue)。 后端采用Spring Boot、Spring Cloud & Alibaba。 注册中心、配置中心选型Nacos...

    SpringCloud思维导图

    1.微服务架构零基础理论入门 2.从2.2.x和H版开始说起 3.关于Cloud各种组件的停更/升级/替换 4.微服务架构编码构建 5.Eureka服务注册与发现 ...8.Ribbon负载均衡服务调用 ...21.SpringCloud Alibaba
Seata处理分布式事务

    springmvc+ibatis框架包,使用spring注入,事务等,包都齐全

    自己配置的springmvc+ibatis框架,自己找齐了包,不容易啊,所以上来跟大家分享一下,spring自动注入包,事务包,ibatis包,数据库连接包,都齐全的,仅局限于springmvc+ibatis,这些包不多,不少,刚够

    基于Spring Cloud+Vue的班级事务管理系统源码(毕设源码)+项目使用说明.zip

    基于Spring Cloud+Vue的班级事务管理系统源码(毕设源码)+项目使用说明.zip 【系统架构】 项目采用B/S架构,前后端通讯采用RESTful API,数据格式使用Json,认证Token格式采用JWT。 身份认证使用Spring Security ...

    SpringCloud H版+SpringCloud alibaba

    SpringCloud H版+SpringCloud alibaba构成,内容涵盖了分布式...分享了服务降级、服务熔断、服务限流、hotkey控制、分布式统一配置管理、分布式全局事务控制、RabbitMQ与Stream整合、Nacos和Nginx配置高可用集群等技术

    yudao-cloud是以 ruoyi-vue-pro为基础实现的 Spring Cloud Alibaba 微服务架构.rar

    后端采用 Spring Cloud Alibaba 微服务架构,注册中心 + 配置中心 Nacos,消息队列 RocketMQ,定时任务 XXL-Job,服务保障 Sentinel,服务网关 Gateway,分布式事务 Seata 数据库可使用 MySQL、Oracle、PostgreSQL...

    Spring攻略(第二版 中文高清版).part1

    第5章 Spring Security 164 5.1 加强URL访问安全 165 5.1.1 问题 165 5.1.2 解决方案 165 5.1.3 工作原理 166 5.2 登录到Web应用 175 5.2.1 问题 175 5.2.2 解决方案 175 5.2.3 工作原理 175 5.3...

    用于将所有Spring xml配置转换为基于Spring java的配置的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

Global site tag (gtag.js) - Google Analytics