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

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

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

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

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

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

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

事务操作

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

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

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

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

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

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

持久实体

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

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

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

Bean 定义

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

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

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

最后的想法

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

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

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

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

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

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 微信语音大揭秘:为什么禁止转发?

    微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 为什么你不应该使用Div作为可点击元素

    为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 破圈是B站头上的紧箍咒

    破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
Top
Baidu
map