当前位置:首页 > 科技  > 软件

如何应对Spring框架有三个主要陷阱

来源: 责编: 时间:2024-06-19 15:36:47 240观看
导读Spring 有一些有助于开发过程的出色功能,但了解该框架的局限性和缺点至关重要。译自Spring Framework Has Three Major Pitfalls — Here’s What To Do,作者 Jonathan Vila。Spring 是一个流行的框架——50%的开发人员

Spring 有一些有助于开发过程的出色功能,但了解该框架的局限性和缺点至关重要。XPS28资讯网——每日最新资讯28at.com

译自Spring Framework Has Three Major Pitfalls — Here’s What To Do,作者 Jonathan Vila。XPS28资讯网——每日最新资讯28at.com

Spring 是一个流行的框架——50%的开发人员现在使用它,它非常适合创建独立的生产级应用程序。借助其帮助开发过程的新类、接口和 API,开发人员必须学习以决定是否要在其编码中使用它。这是因为 Spring Boot 的新功能使用不当会导致错误、错误配置和安全问题,从而影响代码质量。XPS28资讯网——每日最新资讯28at.com

使用Spring 框架时,有三点重要事项需要注意。XPS28资讯网——每日最新资讯28at.com

事务操作

数据库操作必须全部提交才能供其他连接使用。这意味着,对数据库执行的每项操作,该过程都必须打开一个事务,更改数据并提交事务,或者在任何操作失败时回滚事务。XPS28资讯网——每日最新资讯28at.com

Spring 可以通过@Transactional为方法添加注释以创建代理,生成在代码库中无缝运行以管理事务的代码。但是,您可能有多个方法调用链,其中一个操作对数据库进行多次更改,并且为了清晰起见,这些更改必须拆分为多个方法。这就是事务传播发生的地方。XPS28资讯网——每日最新资讯28at.com

通常,我们有一个带有 @Transactional 注释的入口点方法,该方法启动事务。调用链中的其余方法不会指定注释,这允许第一个方法执行整个提交。这是必需的默认传播方法。如果没有正在运行的事务,它将创建一个事务。XPS28资讯网——每日最新资讯28at.com

但现实往往比我们想象的要复杂。例如,假设您有属于不同操作的方法,有时您的方法是唯一合适的操作。在这些调用链中,我们必须保持兼容的事务传播,但 Spring 不会考虑自调用的事务规范。XPS28资讯网——每日最新资讯28at.com

那么,这意味着什么?当您在同一类中从一个方法调用另一个方法时,Spring 将使用“this”方法来引用接收方法。然后 Spring 生成代码作为代理来处理无法执行的事务。XPS28资讯网——每日最新资讯28at.com

为避免这种情况,当在事务中可以执行其他方法的方法中,我们应该指定 @Transaction 注释。XPS28资讯网——每日最新资讯28at.com

持久实体

Spring 的一个优点是它易于与持久层交互。为了使用类型化对象和属性,Java 提供了一个 @Entity 注释来表示关系表,Spring 提供了一个 @Document 注释来表示 MongoDB 和 ElasticSearch 文档。在这些情况下,Spring 可以使用元素中的信息并在对象域和数据库域之间建立桥梁。XPS28资讯网——每日最新资讯28at.com

这里至关重要的是要理解,这些对象表示与数据库中存储元素直接转换的数据对象,这意味着该对象携带的所有字段都将保存在数据库中。Spring 能够共享方法来生成 REST API 服务,这些服务在用户向该服务器发出 HTTP 请求时执行。这些方法还允许使用实体或文档作为 Spring 将从请求有效负载映射的参数。XPS28资讯网——每日最新资讯28at.com

为了防止攻击者冒充用户的安全问题,建议使用数据传输对象 (DTO)将来自用户的信息转换为实体或文档。这将仅考虑必要的信息并对转换进行清理。XPS28资讯网——每日最新资讯28at.com

Bean 定义

Spring 的主要功能是其依赖注入,它使用户能够定义将注入到其他对象及其生命周期中的 bean。借助此功能,类只需要知道它们的依赖关系是什么。它不需要了解如何以及何时必须实例化和删除它们。XPS28资讯网——每日最新资讯28at.com

Spring 框架提供了一种 bean 发现机制,它通过扫描源代码包来查找 bean 定义。Spring 上下文随后根据配置实例化这些 bean。然而,这种强大的功能也带来了责任。重要的是要意识到,此扫描机制可能会影响应用程序的整体性能,并可能导致在编码时难以发现的运行时错误。为了避免这种情况,至关重要的是在应用程序中始终指定一个包作为 Spring bean 扫描的起点。XPS28资讯网——每日最新资讯28at.com

Spring 及其依赖注入框架在 bean 的使用者端提供了强大的注入机制。这使得 bean 实例非常易于使用,具有特定的生命周期,而无需担心这些 bean 何时何地被创建或销毁。为了避免在需要之前注入 bean(这可能会损害应用程序性能),建议不要使用@Autowired注解。相反,应尽可能晚地请求注入,即在通过参数注入需要时。这将指示 Spring 在创建依赖 bean 之前创建 bean。XPS28资讯网——每日最新资讯28at.com

最后的想法

Spring 提供了一些有助于开发过程的出色功能,但它也附带了复杂的配置。了解 Spring 的局限性和缺点对于充分利用它至关重要,但这可能很困难。XPS28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-94853-0.html如何应对Spring框架有三个主要陷阱

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 十分钟了解 Golang 泛型

下一篇: 千万级流量冲击下,如何保证极致性能

标签:
  • 热门焦点
  • 摸鱼心法第一章——和配置文件说拜拜

    为了能摸鱼我们团队做了容器化,但是带来的问题是服务配置文件很麻烦,然后大家在群里进行了“亲切友好”的沟通图片图片图片图片对比就对比,简单对比下独立配置中心和k8s作为配
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 2023年,我眼中的字节跳动

    此时此刻(2023年7月),字节跳动从未上市,也从未公布过任何官方的上市计划;但是这并不妨碍它成为中国最受关注的互联网公司之一。从2016-17年的抖音强势崛起,到2018年的“头腾
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    7月29日消息,三星率先发力可折叠手机市场,在全球市场已经取得了非常亮眼的成绩,接下来会进一步巩固和扩大这一优势。三星在推出Galaxy Z Flip5和Galax
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 三翼鸟智能家居亮相电博会,让用户体验更真实

    2021电博会在青岛国际会展中心开幕中,三翼鸟直接把“家”搬到了现场,成为了展会的一大看点。这也是三翼鸟继9月9日发布了行业首个一站式定制智慧家平台后的
Top