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

wordpress建站 云打印网页界面设计分析案例

wordpress建站 云打印,网页界面设计分析案例,适合做推广的平台,网站建设中怎样进入后台文章目录 1、Spring如何管理事务2、编程式事务1_基本用法2_创建TransactionTemplate实例3_TransactionTemplate的内部结构4_总结 3、声明式事务1_使用Transactional注解2_事务的传播行为3_配置4_总结 1、Spring如何管理事务 Spring为事务管理提供了一致的编程模板#xff0c;… 文章目录 1、Spring如何管理事务2、编程式事务1_基本用法2_创建TransactionTemplate实例3_TransactionTemplate的内部结构4_总结 3、声明式事务1_使用Transactional注解2_事务的传播行为3_配置4_总结 1、Spring如何管理事务 Spring为事务管理提供了一致的编程模板在高层次上建立了统一的事务抽象。也就是说不管是选择 MyBatis、Hibernate、JPA还是Spring JDBCSpring都可以让用户以统一的编程模型进行事务管理。 Spring支持两种事务编程模型 编程式事务 Spring提供了TransactionTemplate模板利用该模板我们可以通过编程的方式实现事务管理而无需关注资源获取、复用、释放、事务同步及异常处理等操作。相对于声明式事务来说这种方式相对麻烦一些但是好在更为灵活我们可以将事务管理的范围控制的更为精确。声明式事务 Spring事务管理的亮点在于声明式事务管理它允许我们通过声明的方式在IoC配置中指定事务的边界和事务属性Spring会自动在指定的事务边界上应用事务属性。相对于编程式事务来说这种方式十分的方便只需要在需要做事务管理的方法上增加Transactional注解以声明事务特征即可。 2、编程式事务 在Spring框架中TransactionTemplate是一个用于编程式事务管理的工具类。它提供了一种在代码中显式控制事务边界的方式使开发人员可以在方法级别定义事务的开始和结束点。TransactionTemplate 简化了事务管理的操作同时提供了一些附加功能如事务传播行为和异常回滚。 1_基本用法 在使用TransactionTemplate之前我们需要先配置一个事务管理器。事务管理器负责管理事务的生命周期并与数据源进行关联。常用的事务管理器包括DataSourceTransactionManager、JpaTransactionManager等根据具体的持久化技术选择相应的事务管理器。这可以在Spring 的配置文件中完成只需要配置好数据源就可以使用了。也可以使用如下方式 Configuration public class AppConfig {Beanpublic DataSource dataSource() {// 配置数据源return new DriverManagerDataSource();}Beanpublic PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}Beanpublic TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {return new TransactionTemplate(transactionManager);} }2_创建TransactionTemplate实例 配置完事务管理器后我们可以在需要进行事务管理的地方创建一个TransactionTemplate实例。TransactionTemplate提供了execute()方法该方法接受一个TransactionCallback作为参数并在事务的上下文中执行其中的代码。 //需要一个回调接口的实现执行内部具体的业务逻辑 public T T execute(TransactionCallbackT action) throws TransactionException下面是一个创建TransactionTemplate实例并使用execute()方法的示例。 SpringBootTest public class Test {Autowiredprivate TransactionTemplate transactionTemplate;Autowiredprivate EmpService empService;org.junit.jupiter.api.Testpublic void test() {transactionTemplate.setIsolationLevel(TransactionTemplate.ISOLATION_READ_COMMITTED);transactionTemplate.execute(new TransactionCallbackObject() {Overridepublic Object doInTransaction(TransactionStatus status) {Emp build Emp.builder().username(sheny).password(123456).name(shenyang).gender((short) 1).job((short) 3).entrydate(LocalDate.now()).deptId(2).createTime(LocalDateTime.now()).updateTime(LocalDateTime.now()).build();empService.save(build);int a 1 / 0;System.out.println(a);return null;}});}org.junit.jupiter.api.Testpublic void test2() {Emp build Emp.builder().username(sheny).password(123456).name(shenyang).gender((short) 1).job((short) 3).entrydate(LocalDate.now()).deptId(2).createTime(LocalDateTime.now()).updateTime(LocalDateTime.now()).build();empService.save(build);int a 1 / 0;System.out.println(a);} }在上述示例中我们通过调用execute()方法来执行事务操作。TransactionCallback的doInTransaction()方法中的代码将在事务的上下文中执行。如果在doInTransaction()方法中发生了未捕获的异常事务将被标记为回滚并回滚到事务的起点如果doInTransaction()方法正常完成事务将被提交。 3_TransactionTemplate的内部结构 继承自 DefaultTransactionDefinition 内部具有事务定义相关的逻辑如隔离级别、事务的传播行为。实现了TransactionOperations,和InitializingBean接口定义了了事务相关操作和bean生命周期中初始化的相关操作。 public class TransactionTemplate extends DefaultTransactionDefinitionimplements TransactionOperations, InitializingBean {Nullableprivate PlatformTransactionManager transactionManager;.public TransactionTemplate(PlatformTransactionManager transactionManager) {this.transactionManager transactionManager;}可以看到内部维护了一个 PlatformTransactionManager 变量也就是说它封装了事务管理的细节避免直接操作 PlatformTransactionManager 的复杂性简化了事务的处理过程。开发者可以在编程式事务管理中以更简洁的方式处理事务逻辑。如下 Override Nullable public T T execute(TransactionCallbackT action) throws TransactionException {Assert.state(this.transactionManager ! null, No PlatformTransactionManager set);if (this.transactionManager instanceof CallbackPreferringPlatformTransactionManager cpptm) {return cpptm.execute(this, action);}else {TransactionStatus status this.transactionManager.getTransaction(this);T result;try {result action.doInTransaction(status);}catch (RuntimeException | Error ex) {// Transactional code threw application exception - rollbackrollbackOnException(status, ex);throw ex;}catch (Throwable ex) {// Transactional code threw unexpected exception - rollbackrollbackOnException(status, ex);throw new UndeclaredThrowableException(ex, TransactionCallback threw undeclared checked exception);}this.transactionManager.commit(status);return result;} }setIsolationLevel()方法可以设置事务的隔离级别、setPropagationBehavior()方法可以设置事务的传播行为通常使用TransactionTemplate.PROPAGATION_REQUIRED这种方式设置 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallback; import org.springframework.transaction.support.TransactionTemplate;Service public class TransactionalService {Autowiredprivate TransactionTemplate transactionTemplate;public void performTransactionalOperation() {transactionTemplate.setPropagationBehavior(TransactionTemplate.PROPAGATION_REQUIRED);transactionTemplate.setIsolationLevel(TransactionTemplate.ISOLATION_READ_COMMITTED);transactionTemplate.execute(new TransactionCallbackVoid() {public Void doInTransaction(TransactionStatus status) {// 在这里执行事务操作// 可以进行数据库操作、调用其他需要事务支持的方法等return null;}});} } public interface TransactionDefinition {int PROPAGATION_REQUIRED 0;int PROPAGATION_SUPPORTS 1;int PROPAGATION_MANDATORY 2;int PROPAGATION_REQUIRES_NEW 3;int PROPAGATION_NOT_SUPPORTED 4;int PROPAGATION_NEVER 5;int PROPAGATION_NESTED 6;int ISOLATION_DEFAULT -1;int ISOLATION_READ_UNCOMMITTED 1; // same as java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;int ISOLATION_READ_COMMITTED 2; // same as java.sql.Connection.TRANSACTION_READ_COMMITTED;int ISOLATION_REPEATABLE_READ 4; // same as java.sql.Connection.TRANSACTION_REPEATABLE_READ;int ISOLATION_SERIALIZABLE 8; // same as java.sql.Connection.TRANSACTION_SERIALIZABLE;}4_总结 TransactionTemplate提供了一种在代码中进行编程式事务管理的方式使开发人员能够在方法级别定义事务的开始和结束点。通过配置事务管理器并使用TransactionTemplate我们可以方便地执行事务操作并根据需要设置传播行为和隔离级别。希望本文能够帮助你更好地理解和应用Spring的事务管理功能。 3、声明式事务 声明式事务管理是基于AOP面向切面编程的它通过配置来管理事务而不是通过代码显式地控制。Spring的声明式事务管理使用Transactional注解来简化事务管理的配置。 1_使用Transactional注解 在Spring中Transactional注解用于标记那些需要事务管理的方法或类。Spring会在运行时自动为这些方法或类提供事务支持。以下是一个使用Transactional注解的示例 Service public class UserService {Transactionalpublic void updateUser(User user) {// 执行业务操作// 该方法的所有操作都在一个事务中执行} }事务的打开、回滚和提交是由事务管理器来完成的我们使用不同的数据库访问框架就要使用与之对应的事务管理器。在Spring Boot中当你添加了数据库访问框架的起步依赖时它就会进行自动配置即自动实例化正确的事务管理器。 对于声明式事务是使用Transactional进行标注的。这个注解可以标注在类或者方法上。当它标注在类上时代表这个类所有公共public非静态的方法都将启用事务功能。当它标注在方法上时代表这个方法将启用事务功能。 另外在Transactional注解上我们可以使用isolation属性声明事务的隔离级别使用propagation属性声明事务的传播机制rollbackFor属性声明针对什么异常进行回滚。 2_事务的传播行为 当我们调用一个业务方法时它的内部可能会调用其他的业务方法以完成一个完整的业务操作。这种业务方法嵌套调用的时候如果这两个方法都是要保证事务的那么就要通过Spring的事务传播机制控制当前事务如何传播到被嵌套调用的业务方法中。 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为它们规定了事务方法和事务方法发生嵌套调用时如何进行传播如下表 属性值含义REQUIRED【默认值】需要事务有则加入无则创建新事务REQUIRES_NEW需要新事务无论有无总是创建新事务SUPPORTS支持事务有则加入无则在无事务状态中运行NOT_SUPPORTED不支持事务在无事务状态下运行,如果当前存在已有事务,则挂起当前事务MANDATORY必须有事务否则抛异常NEVER必须没事务否则抛异常NESTED当前存在事务则在嵌套事务内执行如果当前没有事务则执行与PROPAGATION_REQUIRED类似的操作。 3_配置 真正开启事务支持的注解是EnableTransactionManagement注解。但是如果我们引入 starter 起步依赖会采用自动装配的方式自动开启事务支持。 4_总结 Spring事务管理的亮点在于声明式事务管理它允许我们通过声明的方式在IoC配置中指定事务的边界和事务属性Spring会自动在指定的事务边界上应用事务属性。相对于编程式事务来说这种方式十分的方便只需要在需要做事务管理的方法上增加Transactional注解以声明事务特征即可。
http://www.hkea.cn/news/14585278/

相关文章:

  • 无锡网站seo外包网页设计动画网站
  • 北京营销型网站建设seo优化的主要内容
  • 正邦 网站建设企业营销型网站seo推广
  • 做外贸仿牌都用哪些网站网站怎么做才会有收录
  • 贵阳专业网站制作wordpress后台管理
  • 网站内容建设和管理系统药企做网站需要哪些手续
  • 中国建设银行 云南 网站首页管理类网站开发价格
  • 稳定的网络建站咨询电话三亚网站制
  • 网站白名单 是什么如何制作自己的作品集
  • 青海保险网站建设公司免费ppt幻灯片下载
  • 在网站上上传文件需要怎么做品牌建设成绩
  • 莆田中小企业网站制作网页模板免费下载平台
  • 到国外建网站英语培训学校网站建设多少钱
  • 如何让做网站网站建设肆金手指排名7
  • 网站建设的标准网站建设 是否计入固定资产
  • 网站 建设初步动漫制作技术专业入门
  • 电子商务网站建设合同标准范文在线商城网站制作
  • 如何申请建设网站首页达州达县网站建设
  • 网站内容如何自动关联新浪微博松岗专业做网站公司
  • 网站建设 怎么跑业务网址大全软件下载安装
  • 南宁网站建设公司哪家专业WordPress字库压缩
  • 义乌商城网站开发苏州网站开发公司兴田德润怎么联系
  • 做合约交易哪个网站好哪里可以找到免费的网站
  • 提高网站的权重的最佳方法昌吉市建设局网站
  • 广东石油化工建设集团公司网站wordpress视频自动播放
  • 宁波网站建设公司优选亿企邦西安企业模板建站
  • 什么叫精品网站建设企业网站php源码免费下载
  • 南宁美丽南方官方网站建设意见win2003 wordpress
  • 网站建设如何创建框架页面股权众筹网站建设
  • 垂直类门户网站百度速页建站