App下載

理解@Autowired和@Resource注解的區(qū)別

風里有詩句 2024-01-04 16:37:16 瀏覽數(shù) (1156)
反饋

在 Spring 框架中,@Autowired 和 @Resource 是兩個常用的注解,用于實現(xiàn)依賴注入。盡管它們都可以用于自動裝配 Bean,但它們在某些方面存在一些區(qū)別。本文將詳細解釋 @Autowired 和 @Resource 注解的區(qū)別,包括使用方式、依賴查找方式和適用范圍。

下載

@Autowired 注解

@Autowired 注解是 Spring 框架提供的注解之一,用于自動裝配 Bean。它可以用于字段、構造函數(shù)、Setter 方法以及方法參數(shù)上。當 Spring 容器創(chuàng)建 Bean 實例時,會自動解析和注入相應的依賴。

@Autowired 注解的特點

  • 默認按照類型進行依賴查找和注入。
  • 如果存在多個匹配的 Bean,可以通過指定 Bean 的名稱或使用 @Qualifier 注解來進行精確匹配。
  • 可以在構造函數(shù)、Setter 方法和字段上使用。

示例代碼

@Component
public class MyClass {
    @Autowired
    private MyDependency myDependency;
    
    // 構造函數(shù)注入
    @Autowired
    public MyClass(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
    
    // Setter 方法注入
    @Autowired
    public void setMyDependency(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
    
    // 方法參數(shù)注入
    @Autowired
    public void myMethod(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
}

@Resource 注解

@Resource 注解是 Java EE 提供的注解,也可以用于依賴注入。它可以在字段、Setter 方法和方法參數(shù)上使用。

@Resource 注解的特點

  • 默認按照名稱進行依賴查找和注入,可以通過指定 name 屬性或使用 @Qualifier 注解來進行精確匹配。
  • 可以在字段、Setter 方法和方法參數(shù)上使用。

示例代碼

@Component
public class MyClass {
    @Resource
    private MyDependency myDependency;
    
    // Setter 方法注入
    @Resource
    public void setMyDependency(MyDependency myDependency) {
        this.myDependency = myDependency;
    }
    
    // 方法參數(shù)注入
    public void myMethod(@Resource MyDependency myDependency) {
        this.myDependency = myDependency;
    }
}

@Autowired 和 @Resource 的區(qū)別

  • 來源:@Autowired 是 Spring 框架提供的注解,而 @Resource 是 Java EE 提供的注解。
  • 依賴查找方式:@Autowired 默認按照類型進行依賴查找和注入,可以通過指定 Bean 名稱或使用 @Qualifier 注解來精確匹配。而 @Resource 默認按照名稱進行依賴查找和注入,也可以通過指定 name 屬性或使用 @Qualifier 注解來精確匹配。
  • 兼容性:@Autowired 是 Spring 框架的特定注解,只能在 Spring 應用中使用。而 @Resource 是 Java EE 提供的注解,可以在任何 Java EE 兼容的應用中使用。
  • 注入方式:@Autowired 可以用于字段、構造函數(shù)、Setter 方法和方法參數(shù)上。而 @Resource 可以用于字段、Setter 方法和方法參數(shù)上。

總結(jié)

@Autowired 和 @Resource 注解在依賴注入方面有一些區(qū)別。@Autowired 是 Spring 框架提供的注解,按照類型進行依賴查找和注入,默認適用于 Spring 應用;而 @Resource 是 Java EE 提供的注解,按照名稱進行依賴查找和注入,適用于任何 Java EE 兼容的應用。根據(jù)具體的應用場景和需求,選擇合適的注解來實現(xiàn)依賴注入。

1698630578111788

如果你對編程知識和相關職業(yè)感興趣,歡迎訪問編程獅官網(wǎng)(http://www.o2fo.com/)。在編程獅,我們提供廣泛的技術教程、文章和資源,幫助你在技術領域不斷成長。無論你是剛剛起步還是已經(jīng)擁有多年經(jīng)驗,我們都有適合你的內(nèi)容,助你取得成功。

0 人點贊