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

网站开发php支付接口阐述网站建设利益

网站开发php支付接口,阐述网站建设利益,广告推广平台,用html做卖珠宝的网站作者简介#xff1a;☕️大家好#xff0c;我是Aomsir#xff0c;一个爱折腾的开发者#xff01; 个人主页#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务… 作者简介☕️大家好我是Aomsir一个爱折腾的开发者 个人主页Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务处理什么是事物如何控制事务 Spring控制事务开发思路分析编码分析细节分析 总结 参考文献 孙哥suns说Spring5学不会Spring? 因为你没找对人~孙帅Spring官方文档 前言 上一篇文章的尾声我们简要触及了“事务”这一重要概念。事务在数据库操作中扮演着至关重要的角色确保数据的完整性与一致性。今天我将带领大家进一步深入系统性地探索Spring是如何进行事务管理和控制的。 事务管理在Spring框架中占据着核心的位置它为我们提供了强大而灵活的事务控制机制无论是声明式还是编程式。为了让大家能够从中受益我们会从事务的基本概念开始然后深入到Spring的事务管理策略以及如何在实际应用中恰当地使用这些策略。 希望通过今天的深入学习大家能够更为熟练地在Spring中操作事务确保业务逻辑的健壮性和数据的安全性 事务处理 什么是事物 事务是数据库管理系统中为了确保数据完整性与一致性所提供的一种关键机制。它确保了由一个或多个SQL语句组成的操作作为一个整体被执行即要么全部成功执行要么全部不执行。这种全体性的执行特性保障了即使在面对系统故障或其他意外情况时数据仍然保持一致性。 事务的四大特性通常被称为ACID属性具体包括 原子性 (Atomicity)原子性确保事务作为一个单一的“单位”进行操作意味着如果事务中的某些操作失败整个事务都将回滚就好像从未被执行过一样。隔离性 (Isolation)多个事务并发执行时隔离性确保每个事务在一个单独的“隔离”环境中运行使得事务之间不会相互影响。一致性 (Consistency)一致性确保每个事务执行完后数据库的状态从一个一致的状态转变为另一个一致的状态。持久性 (Durability)持久性保证一旦事务被提交对数据库的更改就是永久性的即使系统发生故障。 了解这四大特性对于理解事务的工作原理和如何在实际应用中使用事务至关重要。在使用Spring进行数据库操作时Spring提供了强大的事务管理功能允许开发者方便地控制和管理事务从而确保数据操作的完整性和一致性 如何控制事务 事务管理在数据库操作中是至关重要的不同的框架或库为我们提供了不同的事务控制手段但本质上这些操作都是基于数据库连接对象Connection的。 JDBC在传统的JDBC编程中事务的控制是直接通过Connection对象来实现的。Connection.setAutoCommit(false)可以关闭自动提交这样可以确保在明确调用commit()方法之前所做的更改不会被提交。如果在事务中遇到错误可以通过rollback()方法来撤回更改。这种手动控制事务的方式给予开发者很大的灵活性但同时也带来了更多的责任因为开发者需要确保在正确的时机提交或回滚事务。MyBatis与JDBC不同MyBatis为开发者提供了一个更高级的抽象即SqlSession。尽管SqlSession为我们提供了诸如commit()和rollback()等方法但实际上这些方法的工作仍然是基于底层的Connection对象来完成的。也就是说SqlSession只是为Connection提供了一个简化的接口将更复杂的操作隐藏起来为开发者提供了一个更简洁、更直观的API。 这两种方式各有优缺点。直接使用Connection对象进行事务管理为开发者提供了最大的灵活性但也需要开发者对事务有深入的理解确保事务在正确的时机被提交或回滚。而通过SqlSession进行事务管理虽然部分隐藏了底层细节但为开发者提供了一个更为简单和直观的API有助于简化代码并减少出错的机会 Spring控制事务开发 思路分析 在Spring框架中事务管理是通过AOP技术实现的它提供了一种高效、灵活的方法来管理事务。事务管理在Spring中的实现与我们之前在AOP中讨论的基本概念紧密相连原始对象、额外功能、切入点和组装切面。 原始对象在事务管理的上下文中原始对象通常指的是业务逻辑类如Service对象。这些对象中包含核心业务逻辑、计算和对DAO的调用。额外功能这是真正实现事务管理的部分。当我们调用一个业务方法时Spring会自动开启一个新的事务。在业务逻辑执行完成之后Spring会决定提交事务或在出现异常时回滚事务。为了完成这个任务Spring提供了DataSourceTransactionManager类。这个类为我们处理了大部分与事务管理相关的复杂性如事务的开启、提交和回滚等。切入点在Spring中我们可以通过在方法或类上添加Transactional注解来标识一个切入点。这告诉Spring哪些方法需要事务管理。当标注了此注解的方法被调用时Spring会自动为其提供事务管理服务。组装切面在Spring的配置中我们使用tx:annotation-driven标签来启用基于注解的事务管理。此标签告诉Spring去查找带有Transactional注解的方法并为其提供事务管理服务。为了使这一切正常工作我们还需要提供一个DataSourceTransactionManager的引用它会负责实际的事务管理工作 编码分析 步骤如下 引入依赖开发原始业务Service类添加注解配置文件配置 !--Spring事务控制所需依赖-- dependencygroupIdorg.springframework/groupIdartifactIdspring-tx/artifactIdversion5.1.14.RELEASE/version /dependencyTransactional public class UserServiceImpl implements UserService {private UserDAO userDAO;public UserDAO getUserDAO() {return userDAO;}public void setUserDAO(UserDAO userDAO) {this.userDAO userDAO;}Overridepublic void register(User user) {userDAO.save(user);throw new RuntimeException(测试异常);} }?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:txhttp://www.springframework.org/schema/txxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd!--此处省略内容为上一节Spring整合的内容--!--原始对象--bean iduserService classcom.aomsir.basic.mybatis.service.impl.UserServiceImplproperty nameuserDAO refuserDAO //bean!--额外功能--bean iddataSourceTransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource //bean!--组装切面--tx:annotation-driven transaction-managerdataSourceTransactionManager / /beanspublic class TestSpringTx {Testpublic void test1() {ApplicationContext ctx new ClassPathXmlApplicationContext(applicationContext3.xml);UserService userService (UserService) ctx.getBean(userService);User user new User();user.setName(Aomsir);user.setPassword(123456);userService.register(user);} }细节分析 确实tx:annotation-driven标签的proxy-target-class属性为我们提供了一个选择代理实现的机会进一步印证了Spring事务管理的AOP基础。 JDK动态代理当proxy-target-class属性设置为false或未明确设置因为默认为false时Spring使用JDK的动态代理来创建代理对象。JDK动态代理的主要要求是目标类必须实现一个或多个接口因为代理类也会实现这些接口。因此只有实现了接口的业务bean才能使用JDK动态代理。Cglib动态代理当proxy-target-class属性设置为true时Spring使用Cglib库创建代理对象。与JDK动态代理不同Cglib可以为没有实现任何接口的类创建代理因为它通过继承目标类的方式创建子类作为代理。这使得Cglib对那些未实现接口的业务bean更加有用。 选择哪种代理方式取决于具体的应用场景和需求。如果业务对象实现了接口JDK动态代理可能是首选因为它通常有更好的性能。但是如果业务对象没有实现任何接口或者有某些原因需要使用Cglib那么就可以选择Cglib动态代理。 总之事实上Spring通过proxy-target-class属性提供了对事务管理代理方式的控制进一步证明了其事务管理是基于AOP的实现无论是通过JDK动态代理还是Cglib动态代理都是遵循AOP的核心原则和概念 !--组装切面-- tx:annotation-driven transaction-managerdataSourceTransactionManager proxy-target-classtrue/总结 在这篇《Spring5应用之事务处理》中我们详细探讨了Spring中事务的关键概念和实现机制。首先我们深入理解了事务的核心特性AICD并通过对比JDBC和MyBatis在事务处理上的实现进一步明确了事务控制的细节和特点。重要的是我们发现Spring通过AOP技术巧妙地进行事务管理从而大大简化了开发者的工作。 文章强调了原始对象如何与额外功能相结合以及如何通过特定的注解和配置实现事务控制。特别是通过深入研究tx:annotation-driven标签我们进一步了解了Spring在事务处理背后的AOP实现机制如何选择不同的代理方法来达到我们的需求。 总而言之本文为我们提供了一个全面、系统的视角看待Spring在事务处理上的优越性和实现方法帮助我们更加自信地在实际开发中应用Spring进行事务管理
http://www.dnsts.com.cn/news/56981.html

相关文章:

  • seo网站基础建设网站开发流程包括
  • 诸城网站建设费用我想做网站服务器选用什么
  • 网站分辨率自适应代码百度网站小程序怎么做
  • 阿里巴巴网站建设教程crm排名
  • wordpress站点前台请求数过多源代码建网站
  • 公主坟网站建设谷歌海外推广
  • 做网站应怎么缴税帝国网站认证码
  • wd设计视图可以做网站吗平果县免费网站哪家好
  • 基本信息型网站有哪些wordpress添加模块
  • 网站的pv uv义马网站开发
  • 人才网站开发wordpress首页添加幻灯片
  • 苏州免费模板建站做网站开发的电话销售话术
  • 简搜网站提交公司网站设计建议
  • 公司网站建设的会计分录wordpress自定义右侧不显示页面
  • 没有备案的网站百度不收录文创网站建设
  • 网站和网页的目的江苏省华建建设股份有限网站
  • 张家港网站推广优化网页 转发到wordpress
  • 网站的系统建设方式广州网页设计多少钱
  • asp网站发布ftp乐云seo模板网站建设
  • 怎么在百度搜索自己的网站seo自动点击排名
  • 做盗链电影网站怎么样别人做网站要把什么要过来
  • 教怎么做ppt的网站合肥网络运营公司哪家好
  • 简单的模板网站企业网站建设需要准备什么
  • 网站推广公司哪网站开发前台怎么样
  • 点播视频网站怎么建设wordpress网站后缀HTML
  • h5营销型网站suteng沈阳商城网站开发
  • 公司做网站比较好的怎么做wp网站
  • 学习网站导航建设网站公司中
  • 赶集门户网站建设方案网站开发一般要哪些开发工具
  • 山西建设厅八大员查询网站苏州政策查询防疫