当前位置: 首页 > news >正文

网站项目总体设计模板海外购物平台都有哪些

网站项目总体设计模板,海外购物平台都有哪些,wordpress 微信采集器,网站地址查询最新区域名1 什么是spring事务 Spring事务管理的实现原理是基于AOP#xff08;面向切面编程#xff09;和代理模式。Spring提供了两种主要的方式来管理事务#xff1a;编程式事务管理和声明式事务管理。 声明式事务管理#xff1a; Spring的声明式事务管理是通过使用注解或XML配置来…1 什么是spring事务 Spring事务管理的实现原理是基于AOP面向切面编程和代理模式。Spring提供了两种主要的方式来管理事务编程式事务管理和声明式事务管理。 声明式事务管理 Spring的声明式事务管理是通过使用注解或XML配置来实现的。它依赖于AOP代理允许你将事务管理与业务逻辑解耦。Transactional可以修饰一个类或者一个方法上面。下面是声明式事务管理的实现原理 使用Transactional注解或XML配置来标识哪些方法应该被事务管理。Spring通过AOP代理生成一个代理对象该代理对象包装了目标对象。当被标记为事务的方法被调用时代理对象会在方法执行前和方法执行后分别开启和提交事务。如果方法执行过程中发生异常代理对象会回滚事务。声明式事务管理的配置也可以定义事务传播行为和隔离级别。 编程式事务管理 编程式事务管理要求在代码中明确调用事务管理API。它通常涉及使用PlatformTransactionManager接口来控制事务的生命周期。以下是编程式事务管理的实现原理 创建一个PlatformTransactionManager实例通常是Spring提供的实现如DataSourceTransactionManager。手动开始一个事务使用getTransaction()方法获取一个TransactionStatus对象。执行一系列操作。根据操作结果可以选择提交或回滚事务使用commit()和rollback()方法。释放事务资源通常在finally块中执行。 Demo: 在使用编程式事务管理时Spring会自动处理数据库连接的autocommit。你通常不需要手动将autocommit设置为false因为Spring的事务管理器会在事务开始时将其设置为false以确保事务的原子性。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.DefaultTransactionDefinition;SpringBootApplication public class TransactionExampleApplication {Autowiredprivate UserService userService;public static void main(String[] args) {SpringApplication.run(TransactionExampleApplication.class, args);}Beanpublic PlatformTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource());}Beanpublic DataSource dataSource() {// Configure your data source here}public void performTransaction() {PlatformTransactionManager transactionManager transactionManager();DefaultTransactionDefinition def new DefaultTransactionDefinition();TransactionStatus status transactionManager.getTransaction(def);try {userService.createUser(User1);userService.createUser(User2);// Simulate an errorint i 1 / 0; // This will cause an exceptiontransactionManager.commit(status);} catch (Exception e) {transactionManager.rollback(status);}} }Service class UserService {Autowiredprivate JdbcTemplate jdbcTemplate;public void createUser(String username) {jdbcTemplate.update(INSERT INTO users (username) VALUES (?), username);} }2 什么是spring事务传播行为 大体解释一下事务在spring中事务可以指一个执行多条sql语句的方法 什么是事务传播行为呢一个事务方法A在方法体中调用另一个事务方法B不管事务A、B是在同一个类中还是不同的类中这样都叫事务的传播行为。 Spring定义了以下几种事务传播行为 REQUIRED默认--required如果当前存在事务则加入该事务如果当前没有事务则创建一个新事务。REQUIRES_NEW创建一个新事务并挂起当前事务如果存在。SUPPORTS如果当前存在事务则加入该事务如果当前没有事务则以非事务方式执行。MANDATORY要求当前存在事务否则抛出异常。NOT_SUPPORTED以非事务方式执行操作挂起当前事务如果存在。NEVER以非事务方式执行操作如果当前存在事务则抛出异常。NESTED如果当前存在事务则创建一个嵌套事务如果当前没有事务则创建一个新事务。嵌套事务是独立于外部事务的子事务可以独立提交或回滚。 通过配置这些传播行为可以实现复杂的事务嵌套和控制以满足不同业务场景的需求。Spring的事务管理机制使事务管理变得更容易同时提供了灵活性和可维护性使开发者能够更好地控制事务的行为。 光看概念难以很好的理解下面给出具体情境代码说明 场景 1REQUIRED默认传播行为 假设你有一个订单服务OrderService和一个支付服务PaymentService。在处理订单时你需要创建订单记录并在支付服务中进行付款。订单服务的createOrder方法和支付服务的makePayment方法都使用Transactional注解并默认传播行为为REQUIRED Service public class OrderService {Autowiredprivate OrderRepository orderRepository;Autowiredprivate PaymentService paymentService;Transactionalpublic void createOrder(Order order) {// 创建订单记录orderRepository.save(order);// 调用支付服务paymentService.makePayment(order);} }Service public class PaymentService {Transactionalpublic void makePayment(Order order) {// 处理支付逻辑} }在这种情况下当你在订单服务中调用createOrder方法时它会启动一个新的事务。如果在makePayment方法中发生异常整个事务将回滚包括订单创建。这是因为REQUIRED传播行为表示要么加入现有事务要么创建新事务。 场景 2REQUIRES_NEW新事务传播行为 现在假设你想要在订单服务中调用支付服务但无论支付服务的事务成功或失败订单服务的事务都必须继续。在这种情况下你可以将支付服务的传播行为配置为REQUIRES_NEW。 Service public class OrderService {Autowiredprivate OrderRepository orderRepository;Autowiredprivate PaymentService paymentService;Transactionalpublic void createOrder(Order order) {// 创建订单记录orderRepository.save(order);// 调用支付服务paymentService.makePayment(order);} }Service public class PaymentService {Transactional(propagation Propagation.REQUIRES_NEW)public void makePayment(Order order) {// 处理支付逻辑} }在这种情况下当你在订单服务中调用createOrder方法时订单服务的事务会启动。然后它调用支付服务的makePayment方法该方法会启动一个新的独立事务。如果支付服务的事务失败仅该事务会回滚而订单服务的事务仍然会继续。 这两个场景说明了不同的事务传播行为如何影响方法之间的事务交互。REQUIRED传播行为将方法加入现有事务或创建新事务而REQUIRES_NEW传播行为会创建一个新事务独立于外部事务。选择适当的传播行为取决于你的业务需求。 那么现在最重要的问题来了 还是以两个事务为例在每个事务都可以设置7中事务传播行为两个事务传播方式就有49中所以能能正确理解各个事务类型的概念将十分重要 以下举例一些事务传播的组合方式 REQUIRED  ------》REQUIRES_NEW   A事务没有就新建B事务不会加入A独立执行B事务发生异常不会回滚到AREQUIRED  -----》 REQUIRED  A事务没有就创建  B事务会先判断有没有事务有就加入所以A,B同在一个事务B发生异常会回滚到AREQUIRES_NEW  ------》REQUIRED  A事务没有就创建B事务加入A事务A,B同属一个事务B事务发生异常不会回滚到A 通过三面三个例子就能清楚的了解REQUIRED   REQUIRES_NEW   这两种行为REQUIRED   如果没有就创建有就加入不独立与其他事务。而REQUIRES_NEW   在没有事务时创建事务有时加入其他事务中但是REQUIRES_NEW   具有独立性不会影响其他事务也不会被其他事务影响而回滚 解释一下REQUIRES_NEW   与SUPPORTS容易混淆比如REQUIRED  --》REQUIRES_NEW   与REQUIRED  --》SUPPORTS 这两种后者发生异常都不会回滚到之前的事务具有独立性REQUIRES_NEW   与SUPPORTS的区别在于之前没有外部事务REQUIRES_NEW   会创建事务而SUPPORTS以非事务执行这就是我认为的唯一区别 综上REQUIRED   REQUIRES_NEW    SUPPORTS 无论怎么随机组合就能理解了 接下来继续讨论NOT_SUPPORTED   REQUIRES_NEW----》NOT_SUPPORTED 后者不会加入事务直接是非事务执行具有独立性。 NOT_SUPPORTED与SUPPORTS的区别就是当之前有外部事务时NOT_SUPPORTED修饰的方法根本不会作为一个事务而SUPPORTS会加入之前的事务具有事务的ACID特性 综上我们已经弄懂REQUIRED   REQUIRES_NEW    SUPPORTS  NOT_SUPPORTED 最后再来一个多传播行为的思考:REQUIRED   REQUIRES_NEW    SUPPORTS  NOT_SUPPORTED 分别对应四个事务ABCB A事务方法体中{ 调用B 调用C 调用D } 这时如果B事务发生异常会怎样B会回滚不影响事务A。C加入A事务执行。D以非事务执行。 我们换一下再来思考 A事务方法体中{ 调用B } B事务方法体中 { 调用C 调用D } 以上调用B出现异常会怎样?B会回滚那么B中调用的方法都会回滚。 还有3中传播行为没讲自己去理解吧。
http://www.hkea.cn/news/14410025/

相关文章:

  • 网站域名不变网站可以从做吗拜年视频制作软件
  • 网站建设收费价目表物流网站建设策划书怎么写
  • 山西建设厅官方网站公示搭建什么网站好
  • 做直播网站要多大带宽石家庄做网站公司汉狮价格
  • 海南智能网站建设公司广东网站开发费用
  • 信通网站开发中心安徽茶叶商城网站建设
  • 腾龙官方网站做号软件中国制造网外贸平台下载
  • 大型物流公司网站湛江定制建站
  • 建各公司网站要多少钱宜兴建设局的网站
  • 前端可以做网站吗天工网官方网站
  • 网站聊天室怎样做炫彩马甲新手做网站需要多久
  • 枣庄住房和城乡建设厅网站江西核工业建设有限公司网站
  • 台山网站定制抖音直播间引流推广方法
  • 网站建设要学哪种计算机语言python和php哪个做网站
  • 网站建设构思西点培训学校
  • 制作网站源码wordpress 自定义网址
  • 哪个公司做外贸网站好页面设计的对称方法包括哪几种形式
  • 一个空间做2个网站dark ui wordpress
  • 平面设计官方网站网页制作素材动物
  • 做名片哪个网站可以找网站地图怎么做XML
  • 企业网站模板 htmlwordpress 搜索频率
  • 绵阳网站开发公司百度权重工具
  • 做新闻类网站ftp媒体库 wordpress
  • 网站建设后的心得网站开发国内外研究背景
  • 移动端网站定制网站被黑客入侵怎么办
  • 网站建设学习网公司有哪些快速seo关键词优化技巧
  • 知名高端网站建设报价wordpress 百度主题
  • 江苏建设集团有限公司网站网站制作金华公司电话
  • 有没有做美食的网站商标设计app
  • 网站怎么做自己站长wordpress 安装主题 主机名