91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中的@Autowired和@Resource注解怎么使用

發布時間:2023-05-06 16:21:37 來源:億速云 閱讀:257 作者:iii 欄目:開發技術

本篇內容主要講解“Spring中的@Autowired和@Resource注解怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring中的@Autowired和@Resource注解怎么使用”吧!

@Resource和@Autowired是Spring Framework中兩種常用的注入方式,它們的作用是在Spring容器中自動裝配Bean對象.

@Autowired

@Autowired是Spring Framework提供的注解,它也可以實現自動裝配Bean對象.

@RestController
public class DemoController {
    /**
     * 下面兩種@Autowired使用一種即可
     */
    @Autowired
    DemoService demoService;
    @Autowired
    public void setDemoService(DemoService demoService) {
        this.demoService = demoService;
    }
}

@Autowired注解按照類型(byType)裝配依賴對象,默認情況下它要求依賴對象必須存在,如果允許null值,可以設置它的required屬性為false.如果我們想使用按照名稱(byName)來裝配,可以結合@Qualififier注解一起使用.如下:

@RestController
public class DemoController {
    @Autowired
    @Qualifier(value = "demoService")
    DemoService demoService;
}

如果存在多個同類型的Bean對象,可以使用@Primary來指定一個默認的Bean對象,如下:

@RestController
public class DemoController {
    @Autowired
    DemoService demoService;
}
public interface DemoService {}
@Service
@Primary
public class DemoServiceImpl implements DemoService {}
@Service
public class DemoServiceImpl1 implements DemoService {}

@Resource

@Resource默認按照byName自動注入,由JavaEE5提供.@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型,所以,如果要使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略.如果即不指定name也不指定type,這時將通過反射機制使用byName自動注入策略.

@RestController
public class DemoController {
    /**
     * 下面兩種@Resource使用一種即可
     */
    @Resource
    DemoService demoService;
    @Resource
    public void setDemoService(DemoService demoService) {
        this.demoService = demoService;
    }
}

@Resource裝配順序:

  • 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋異常

  • 如果指定了name,則從上下文中查找名稱匹配的bean進行裝配,找不到則拋異常

  • 如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或找到多個,都會拋異常

  • 如果即沒有指定type,也沒指定name,則自動按照byName方式進行裝配,如果匹配則自動裝配.如果沒有匹配,則回退為一個原始類型進行匹配.

總結

區別

  • @Resource默認按名稱進行匹配,@Autowired默認按照類型進行匹配,但可以通過@Qualifier注解指定名稱進行匹配

  • @Resource可以用在字段,setter方法和構造函數上,@Autowired可以用在字段,setter方法,構造函數和方法上

  • @Resource不支持@Primary注解,@Autowired支持

  • @Resource是JavaEE5提供的注解,而@Autowired是Spring Framework提供的注解

應用場景

根據以上區別,我們可以根據具體情況選擇使用@Resource或@Autowired.如果希望按照名稱進行匹配,并且不需要支持@Primary注解,可以選擇@Resource;如果希望按照類型進行匹配,并且需要支持@Primary注解,可以選擇@Autowried.根據具體情況選擇合適的注解來實現自動裝配

到此,相信大家對“Spring中的@Autowired和@Resource注解怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万载县| 新泰市| 涟水县| 那曲县| 德令哈市| 丁青县| 高密市| 靖江市| 健康| 清丰县| 临沂市| 庆城县| 浦城县| 宜兰市| 密山市| 南充市| 永平县| 应用必备| 连江县| 庆云县| 普安县| 招远市| 根河市| 柳河县| 东阳市| 嫩江县| 黄骅市| 阿坝| 榕江县| 资中县| 玉山县| 通州区| 酒泉市| 双流县| 利川市| 丹阳市| 卓尼县| 全州县| 临夏县| 阳高县| 博兴县|