@Resource和@Autowired區別

在Java Spring框架中,@Resource@Autowired注解都用于依賴注入,但它們之間有一些區別:

  1. 來源:

    • @Autowired是Spring特定的注解,它通過類型匹配來進行自動裝配。
    • @Resource是Java EE(javax.annotation.Resource)提供的注解,它通過名稱匹配來進行依賴注入。
  2. 匹配方式:

    • @Autowired通過類型匹配進行注入。當有多個類型匹配時,Spring會嘗試使用更具體的類型進行注入。
    • @Resource通過名稱匹配進行注入。它可以指定要注入的bean的名稱,如果沒有指定名稱,則默認按照字段名、方法名來匹配。
  3. 可選性:

    • @Autowired是非強制性的。如果找不到匹配的bean,則會拋出異常。但是可以通過@Autowired(required = false)來標記為可選的。
    • @Resource是強制性的。如果找不到與指定名稱匹配的bean,則會拋出異常。
  4. 作用對象:

    • @Autowired通常用于自動注入Spring bean。
    • @Resource既可以用于注入Spring bean,也可以用于注入其他Java EE組件,如DataSource、EJB等。

總的來說,@Autowired更加靈活,適用于Spring應用程序,而@Resource更多地與Java EE一起使用,并且更具有限制性和指定性。
好的,讓我們通過一個簡單的Spring應用程序來說明這兩個注解的使用情況。

假設我們有一個名為 UserService 的服務類,它依賴于兩個不同的類:UserRepositoryEmailService

public class UserService {@Autowiredprivate UserRepository userRepository;@Resourceprivate EmailService emailService;// 省略其他方法
}

在這個示例中,UserRepository 是一個Spring bean,而 EmailService 是一個非Spring組件。

現在讓我們來看看這兩個注解的行為:

  • @Autowired 用于 UserRepository,它將根據類型自動注入 UserRepository bean。

  • @Resource 用于 EmailService,它將根據名稱匹配來注入 EmailService。如果在Spring容器中沒有找到與 emailService 名稱匹配的bean,則會引發異常。

如果我們稍微修改一下:

public class UserService {@Autowiredprivate UserRepository userRepository;@Resource(name = "emailServiceBean")private EmailService emailService;// 省略其他方法
}

在這個示例中,我們通過指定 name 屬性來確保 EmailService bean 的正確注入,假設在Spring容器中有一個名為 emailServiceBean 的bean。

總之,@Autowired 通過類型自動注入bean,而 @Resource 通過名稱匹配來注入bean。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MATLAB】語音信號識別與處理:T1小波濾波算法去噪及譜相減算法呈現頻譜

1 基本定義 T1小波濾波算法是一種基于小波變換的信號去噪算法。它可以有效地去除信號中的噪聲,并保留信號的主要特征。該算法的主要思想是將信號分解為多個不同尺度的小波系數,然后通過對小波系數進行閾值處理來去除噪聲。 具體來說,T1小波濾…

服務器數據恢復-服務器RAID5上層XFS文件系統分區數據恢復案例

服務器數據恢復環境: MD1200磁盤柜中的磁盤通過RAID卡創建了一組RAID5陣列,分配了一個LUN。在Linux操作系統層面對該LUN進行了分區,劃分sdc1和sdc2兩個分區,通過LVM擴容的方式將sdc1分區加入到了root_lv中;sdc2分區格式…

飛槳(PaddlePaddle)Tensor使用教程

文章目錄 飛槳(PaddlePaddle)Tensor使用教程1. 安裝飛槳2. 創建Tensor3. Tensor的基本屬性4. Tensor的操作5. Tensor的廣播機制6. Tensor與Numpy數組的轉換7. 結論 飛槳(PaddlePaddle)Tensor使用教程 1. 安裝飛槳 首先&#xff…

vue2+vxe-table的v3版本:設置vxe-table表格border顏色、單元格高度、斑馬線條紋顏色、表頭背景色和文字樣式

模板與樣式完整代碼 <vxe-table:data"tableData"height"auto"align"center"borderresizablestriperoundrow-id"id":row-config"{ isCurrent: true, isHover: true }":scroll-y"{ enabled: true, gt: 10 }":sho…

SSL證書驗證失敗怎么辦?常見SSL證書驗證失敗原因及解決辦法

網站與其訪問者建立信任的主要方式就是通過簽發SSL證書&#xff0c;因為SSL證書是由受信任的證書頒發機構&#xff08;CA&#xff09;在驗證某個網站真實性和可信任性之后才頒發的。但是&#xff0c;網站部署SSL證書后&#xff0c;偶爾會出現SSL證書驗證失敗而導致錯誤&#xf…

瞄準關基行業!Lockbit卷土重來,銀狐卷出新變種

Lockbit與銀狐木馬是亞信安全2023年重點關注的兩支勒索軟件家族。Lockbit可謂是2023年度最為活躍和猖獗的勒索軟件&#xff0c;受害者上千贖金破億&#xff0c;攻擊技能更是疊加buff不斷升級&#xff0c;在經歷國際聯合執法后在近期卷提重來。銀狐木馬則是2023年的“卷王”&…

跟隨機器人方法總結

文章目錄 基于目標檢測基于視覺跟蹤與自主導航的移動機器人目標跟隨系統[J]基于視覺的履帶車跟隨系統研究[D]基于人體骨架基于二維碼基于視覺的履帶車跟隨系統研究[D]基于目標檢測 基于視覺跟蹤與自主導航的移動機器人目標跟隨系統[J] 針對在移動機器人跟隨目標的過程中目標消…

短劇分銷系統開發,短劇爆火下的商業機遇

這幾年來&#xff0c;短劇市場一直保持著快速發展的步伐&#xff0c;在行業中掀起了了一股風潮。短劇被大眾當做“電子榨菜”&#xff0c;符合了當下人們的碎片化時間。節奏快、劇情緊湊的特點深受大眾的追捧&#xff0c;短劇的市場規模也超過了百億元。 在短劇的爆火下&#…

開發知識點-Ruby

Ruby https://m.runoob.com/ruby/ruby-installation-windows.htmlhttps://rubyinstaller.org/downloads/

題目 1454: 藍橋杯歷屆試題-螞蟻感冒

題目描述: 長100厘米的細長直桿子上有n只螞蟻。它們的頭有的朝左&#xff0c;有的朝右。 每只螞蟻都只能沿著桿子向前爬&#xff0c;速度是1厘米/秒。 當兩只螞蟻碰面時&#xff0c;它們會同時掉頭往相反的方向爬行。 這些螞蟻中&#xff0c;有1只螞蟻感冒了。并且在和其它螞蟻…

MySQL中DDL語句,會隱式地提交事務

DDL&#xff08;Data Definition Language&#xff09;語句&#xff0c;如CREATE TABLE、ALTER TABLE、DROP TABLE等&#xff0c;會隱式地提交事務&#xff0c;即使它們發生在BEGIN和ROLLBACK語句之間。這意味著一旦執行了DDL語句&#xff0c;之前的所有未提交的事務都會被自動…

Transformer——詞向量

詞向量 在自然語言處理任務中&#xff0c;模型的輸入大多為單個字或者詞。但是字詞都是自然語言的表述&#xff0c;對于以二進制為處理語言的計算機來說&#xff0c;其并不認識這個字詞。所以需要將字詞轉換為計算機認識的數據。 轉換的方法有很多&#xff0c;我們接下來將介…

【Matlab深度學習】詳解matlab深度學習進行時間序列預測

&#x1f517; 運行環境&#xff1a;Matlab &#x1f6a9; 撰寫作者&#xff1a;左手の明天 &#x1f947; 精選專欄&#xff1a;《python》 &#x1f525; 推薦專欄&#xff1a;《算法研究》 &#x1f510;#### 防偽水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

bat文件的外部參數

bat執行時有兩種獲得參數的方法&#xff0c;一種是執行時在命令行中輸入&#xff0c;一種是運行時從鍵盤輸入。 從命令行輸入參數&#xff0c;使用兩個%中間包含數字表示&#xff0c;數字從1至9&#xff0c;命令行參數最多為9個。示例&#xff1a; echo off echo show %1%鍵盤…

力扣——盛最多水的容器

題目描述&#xff1a; 給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。 說明&#xff1a;…

最短路徑(2.19)

目錄 1.網絡延遲時間 弗洛伊德算法 迪杰斯特拉算法 2. K 站中轉內最便宜的航班 3.從第一個節點出發到最后一個節點的受限路徑數 4.到達目的地的方案數 1.網絡延遲時間 有 n 個網絡節點&#xff0c;標記為 1 到 n。 給你一個列表 times&#xff0c;表示信號經過 有向 邊的…

day32貪心算法 part02

貪心系列的時候&#xff0c;題目和題目之間貌似沒有什么聯系,是真的就是沒什么聯系&#xff0c;因為貪心無套路,沒有個整體的貪心框架解決一系列問題&#xff0c;只能是接觸各種類型的題目鍛煉自己的貪心思維。貪心只是一類題的統稱&#xff0c;并沒有什么固定套路。 122. 買賣…

Android NDK底層BUG,記錄:connect、socket(AF_INET, SOCK_STREAM, 0) 等系統套接字接口函數崩潰問題。

在 Android NDK 之中&#xff0c;看上去調用 connect、socket 函數是不會崩潰的&#xff0c;但這是否定的&#xff0c;它在特定的情況下存在必定的崩潰的問題。 但是這種情況放到MACOS、LINUX、WINDOWS都不會崩潰&#xff0c;而它崩潰的點出現在操作系統底層。 人們需要參考這…

香橙派企業信用問題-勸一個是一個,別買!!!

1. 背景 香橙派推廣旗下AI PRO 開發板&#xff0c;在B站做直播&#xff0c;一場直播兩個直播間&#xff0c;分別抽取一名觀眾&#xff0c;宣傳是場場送AI PRO開發板&#xff01;&#xff01;&#xff01; 2. 收到獎品與宣傳不符合 3.咨詢群主&#xff1a;態度很傲慢&#xff0c…

MES的生產計劃管理與ERP的生產計劃管理到底有什么不同?

在制造業信息化的道路上&#xff0c;ERP系統和MES系統是兩個非常重要的信息化管理工具。大多數制造業企業往往首先考慮上ERP系統&#xff0c;經過一段時間的深度使用后&#xff0c;再引進MES系統進行報工或數采。但我們可以發現&#xff0c;這兩個系統都能進行生產管理&#xf…