成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何應對Spring框架有三個主要陷阱

開發 架構
Spring 的主要功能是其依賴注入,它使用戶能夠定義將注入到其他對象及其生命周期中的 bean。借助此功能,類只需要知道它們的依賴關系是什么。它不需要了解如何以及何時必須實例化和刪除它們。

Spring 有一些有助于開發過程的出色功能,但了解該框架的局限性和缺點至關重要。

譯自Spring Framework Has Three Major Pitfalls — Here’s What To Do,作者 Jonathan Vila。

Spring 是一個流行的框架——50%的開發人員現在使用它,它非常適合創建獨立的生產級應用程序。借助其幫助開發過程的新類、接口和 API,開發人員必須學習以決定是否要在其編碼中使用它。這是因為 Spring Boot 的新功能使用不當會導致錯誤、錯誤配置和安全問題,從而影響代碼質量。

使用Spring 框架時,有三點重要事項需要注意。

事務操作

數據庫操作必須全部提交才能供其他連接使用。這意味著,對數據庫執行的每項操作,該過程都必須打開一個事務,更改數據并提交事務,或者在任何操作失敗時回滾事務。

Spring 可以通過@Transactional為方法添加注釋以創建代理,生成在代碼庫中無縫運行以管理事務的代碼。但是,您可能有多個方法調用鏈,其中一個操作對數據庫進行多次更改,并且為了清晰起見,這些更改必須拆分為多個方法。這就是事務傳播發生的地方。

通常,我們有一個帶有 @Transactional 注釋的入口點方法,該方法啟動事務。調用鏈中的其余方法不會指定注釋,這允許第一個方法執行整個提交。這是必需的默認傳播方法。如果沒有正在運行的事務,它將創建一個事務。

但現實往往比我們想象的要復雜。例如,假設您有屬于不同操作的方法,有時您的方法是唯一合適的操作。在這些調用鏈中,我們必須保持兼容的事務傳播,但 Spring 不會考慮自調用的事務規范。

那么,這意味著什么?當您在同一類中從一個方法調用另一個方法時,Spring 將使用“this”方法來引用接收方法。然后 Spring 生成代碼作為代理來處理無法執行的事務。

為避免這種情況,當在事務中可以執行其他方法的方法中,我們應該指定 @Transaction 注釋。

持久實體

Spring 的一個優點是它易于與持久層交互。為了使用類型化對象和屬性,Java 提供了一個 @Entity 注釋來表示關系表,Spring 提供了一個 @Document 注釋來表示 MongoDB 和 ElasticSearch 文檔。在這些情況下,Spring 可以使用元素中的信息并在對象域和數據庫域之間建立橋梁。

這里至關重要的是要理解,這些對象表示與數據庫中存儲元素直接轉換的數據對象,這意味著該對象攜帶的所有字段都將保存在數據庫中。Spring 能夠共享方法來生成 REST API 服務,這些服務在用戶向該服務器發出 HTTP 請求時執行。這些方法還允許使用實體或文檔作為 Spring 將從請求有效負載映射的參數。

為了防止攻擊者冒充用戶的安全問題,建議使用數據傳輸對象 (DTO)將來自用戶的信息轉換為實體或文檔。這將僅考慮必要的信息并對轉換進行清理。

Bean 定義

Spring 的主要功能是其依賴注入,它使用戶能夠定義將注入到其他對象及其生命周期中的 bean。借助此功能,類只需要知道它們的依賴關系是什么。它不需要了解如何以及何時必須實例化和刪除它們。

Spring 框架提供了一種 bean 發現機制,它通過掃描源代碼包來查找 bean 定義。Spring 上下文隨后根據配置實例化這些 bean。然而,這種強大的功能也帶來了責任。重要的是要意識到,此掃描機制可能會影響應用程序的整體性能,并可能導致在編碼時難以發現的運行時錯誤。為了避免這種情況,至關重要的是在應用程序中始終指定一個包作為 Spring bean 掃描的起點。

Spring 及其依賴注入框架在 bean 的使用者端提供了強大的注入機制。這使得 bean 實例非常易于使用,具有特定的生命周期,而無需擔心這些 bean 何時何地被創建或銷毀。為了避免在需要之前注入 bean(這可能會損害應用程序性能),建議不要使用@Autowired注解。相反,應盡可能晚地請求注入,即在通過參數注入需要時。這將指示 Spring 在創建依賴 bean 之前創建 bean。

最后的想法

Spring 提供了一些有助于開發過程的出色功能,但它也附帶了復雜的配置。了解 Spring 的局限性和缺點對于充分利用它至關重要,但這可能很困難。

責任編輯:武曉燕 來源: 云云眾生s
相關推薦

2021-08-19 11:22:22

深度學習編程人工智能

2010-06-30 11:45:14

2022-07-15 15:56:51

云計算工具云中斷

2022-03-24 14:05:56

數字孿生IT領導者數據分析

2019-10-24 15:56:30

Kubernetes虛擬化云原生

2024-02-01 00:21:41

Rust編程框架

2023-03-08 07:34:23

響應式更新細粒度更新

2012-01-06 11:13:02

SinatraJava框架

2022-09-19 09:19:24

云存儲TCO云服務

2021-04-14 11:49:15

首席信息官產品管理CIO

2020-06-11 09:00:27

SDN網絡架構網絡

2023-10-17 07:23:00

Vue組件代碼

2012-05-27 18:24:12

蘋果

2023-10-10 15:17:54

數據集降維技術

2023-04-26 11:14:11

IT領導者遠程工作

2020-08-21 10:58:43

云計算云安全技術

2025-03-05 10:00:00

.NET 9C#開發

2023-09-27 23:43:51

單元測試Spring

2013-06-30 09:51:54

SpringWeb服務器

2022-04-20 12:06:10

漏洞Java應用程序黑客
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久久一区二区 | 国产精品免费av | 欧美在线一区二区三区 | 久久久不卡网国产精品一区 | 久久精品久久久 | 日韩在线观看视频一区 | 久久高清精品 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产精品99久久久久久动医院 | xxxxx黄色片 欧美一区免费 | 日本在线视频中文字幕 | 二区欧美 | 国产精品永久免费 | 日韩精品一区二区三区久久 | 中文字幕精品一区久久久久 | 一区二区免费在线观看 | 五月综合色啪 | 新超碰97 | 日韩在线一区二区 | 操人视频在线观看 | 欧美精品在欧美一区二区 | 国产一二区免费视频 | 国产日产欧产精品精品推荐蛮挑 | 五月天国产在线 | 毛片免费看的 | 日韩欧美一二三区 | 中文字幕电影在线观看 | 最新超碰 | 国产999精品久久久久久 | 成人免费日韩 | 色妞av | 亚洲国产精品激情在线观看 | 国产在线精品一区二区 | 国产精品国产三级国产aⅴ原创 | 欧美a级成人淫片免费看 | 国产午夜精品一区二区三区嫩草 | 欧美一级大黄 | 久久精选 | 国产在线一区二区三区 | 免费成人在线网站 | 久久精品久久久久久 |