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

网站建设公司及网络安全法如何自己做搜索网站

网站建设公司及网络安全法,如何自己做搜索网站,做seo网站地图重要吗,可以看电视剧的网站前几天发了一篇文章里面有一个关于事务失效的问题#xff1a;用 Spring 的 Transactional 注解控制事务有哪些不生效的场景#xff1f;其中有个热心粉丝留言分享了下#xff0c;我觉得总结得有点经验#xff0c;给置顶了#xff1a;但是我觉得还是总结得不够全#xff0c… 前几天发了一篇文章里面有一个关于事务失效的问题用 Spring 的 Transactional 注解控制事务有哪些不生效的场景其中有个热心粉丝留言分享了下我觉得总结得有点经验给置顶了但是我觉得还是总结得不够全今天栈长我再总结一下再延着这位粉丝的总结再补充完善一下不用说我肯定也不见得总结全但希望可以帮忙有需要的人。1 数据库引擎不支持事务这里以 MySQL 为例其 MyISAM 引擎是不支持事务操作的InnoDB 才是支持事务的引擎一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5.5 开始的默认存储引擎是InnoDB之前默认的都是MyISAM所以这点要值得注意底层引擎不支持事务再怎么搞都是白搭。2 没有被 Spring 管理如下面例子所示// Service public class OrderServiceImpl implements OrderService {Transactionalpublic void updateOrder(Order order) {// update order}} 如果此时把 Service 注解注释掉这个类就不会被加载成一个 Bean那这个类就不会被 Spring 管理了事务自然就失效了。3 方法不是 public 的以下来自 Spring 官方文档When using proxies, you should apply the Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.大概意思就是 Transactional 只能用于 public 的方法上否则事务不会失效如果要用在非 public 方法上可以开启 AspectJ 代理模式。4 自身调用问题来看两个示例Service public class OrderServiceImpl implements OrderService {public void update(Order order) {updateOrder(order);}Transactionalpublic void updateOrder(Order order) {// update order}} update方法上面没有加 Transactional 注解调用有 Transactional 注解的 updateOrder 方法updateOrder 方法上的事务管用吗再来看下面这个例子Service public class OrderServiceImpl implements OrderService {Transactionalpublic void update(Order order) {updateOrder(order);}Transactional(propagation  Propagation.REQUIRES_NEW)public void updateOrder(Order order) {// update order}} 这次在 update 方法上加了 TransactionalupdateOrder 加了 REQUIRES_NEW 新开启一个事务那么新开的事务管用么这两个例子的答案是不管用因为它们发生了自身调用就调该类自己的方法而没有经过 Spring 的代理类默认只有在外部调用事务才会生效这也是老生常谈的经典问题了。这个的解决方案之一就是在的类中注入自己用注入的对象再调用另外一个方法这个不太优雅另外一个可行的方案可以参考《Spring 如何在一个事务中开启另一个事务》这篇文章。5 数据源没有配置事务管理器Bean public PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource); } 如上面所示当前数据源若没有配置事务管理器那也是白搭6 不支持事务来看下面这个例子Service public class OrderServiceImpl implements OrderService {Transactionalpublic void update(Order order) {updateOrder(order);}Transactional(propagation  Propagation.NOT_SUPPORTED)public void updateOrder(Order order) {// update order}} Propagation.NOT_SUPPORTED 表示不以事务运行当前若存在事务则挂起。这表示不支持以事务的方式运行所以即使事务生效也是白搭7 异常被吃了这个也是出现比较多的场景// Service public class OrderServiceImpl implements OrderService {Transactionalpublic void updateOrder(Order order) {try {// update order} catch {}}} 把异常吃了然后又不抛出来事务也不会回滚8 异常类型错误上面的例子再抛出一个异常// Service public class OrderServiceImpl implements OrderService {Transactionalpublic void updateOrder(Order order) {try {// update order} catch {throw new Exception(更新错误);}}} 这样事务也是不生效的因为默认回滚的是RuntimeException如果你想触发其他异常的回滚需要在注解上配置一下如Transactional(rollbackFor  Exception.class) 这个配置仅限于 Throwable 异常类及其子类。总结本文总结了 8 种事务失效的场景其实发生最多就是自身调用、异常被吃、异常抛出类型不对这 3 个了像文章开头说的那样本文不一定总结得全只是总结常见的事务失效的场景如果你还知道其他场景也欢迎留言分享。 往期推荐 千万不要这样写代码9种常见的OOM场景演示Spring Boot集成Redis这个坑把我害惨了SpringBoot接口幂等性实现的4种方案
http://www.pierceye.com/news/999754/

相关文章:

  • 长清区网站建设宣传wordpress人才主题
  • 做一个平面网站的成本公司官方网站建设费计入什么科目
  • 做推广任务的网站三亚做网站的公司
  • 嘉兴网站建设费用建设网站要注意什么问题
  • 网站建设公司北京华网天下实惠网上做医生哪个网站好
  • 小型网站开发时间周期网站广告位图片更换没反应
  • 云服务器能放网站吗wordpress个人博客带会员
  • 网站做推广需要什么条件开一家网络公司需要什么条件
  • 能制作网站的软件wordpress转移至typecho
  • 荆州网站建设流程英文网站建设推广
  • 网站后台素材建e室内设计网官网全景效果图
  • 国外 网站页面设计中国知名的建网站的公司
  • pc网站做移动端适配宁波高质量品牌网站设计厂家
  • 淘宝客网站需要备案建筑材料网站建设
  • c 是用来做网站的吗网易蜂巢 wordpress
  • 网站主题模板制作百润网站建设
  • 搜狗网站排名软件国家城乡建设部网站
  • 专业网站推广服务咨询网站怎么可以被收录
  • 怎么自己做网站挂到百度上通号建设集团有限公司
  • 建设图片展示网站林萌荣温州市网页制作
  • 企业门户网站内容建设如何一个空间做多个网站
  • 行业网站源码网站建设福永附近网络公司
  • 建设网站哪个便宜ps做网站的优点
  • 网站制作中的更多怎么做盘锦市建设银行网站
  • 广西响应式网站建设男女做暧网站
  • 网站建设中心开发公司对施工单位管理措施
  • 青岛网站建设方案优化宋祖儿在哪个网站做网红
  • 莆田网站制作价格wordpress占用带宽
  • 网站用图片做背景搜索引擎推广一般包括哪些
  • 网站首页设计html代码可以发广告的平台