亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Spring的@Autowired,@Resource和@Inject實現原理是什么

發布時間:2022-01-04 09:39:39 來源:億速云 閱讀:151 作者:iii 欄目:編程語言

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

一、spring依賴注入使用方式

@Autowired是spring框架提供的實現依賴注入的注解,主要支持在set方法,field,構造函數中完成bean注入,注入方式為通過類型查找bean,即byType的,如果存在多個同一類型的bean,則使用@Qualifier來指定注入哪個beanName的bean。  與JDK的@Resource的區別:@Resource是基于bean的名字,即beanName,來從spring的IOC容器查找bean注入的,而@Autowried是基于類型byType來查找bean注入的。  與JDK的@Inject的區別:@Inject也是基于類型來查找bean注入的,如果需要指定名稱beanName,則可以結合使用@Named注解,而@Autowired是結合@Qualifier注解來指定名稱beanName。

二、spring依賴注入注解的實現原理

注解處理器

在spring框架內部實現當中,注解實現注入主要是通過bean后置處理器BeanPostProcessor接口的實現類來生效的。BeanPostProcessor后置處理器是在spring容器啟動時,創建bean對象實例后,馬上執行的,對bean對象實例進行加工處理。  @Autowired是通過BeanPostProcessor接口的實現類AutowiredAnnotationBeanPostProcessor來實現對bean對象對其他bean對象的依賴注入的;  @Resource和@Inject是通過BeanPostProcessor接口的實現類CommonAnnotationBeanPostProcessor來實現的,其中如名字所述,即公共注解CommonAnotation,CommonAnnotationBeanPostProcessor是spring中統一處理JDK中定義的注解的一個BeanPostProcessor。該類會處理的注解還包括@PostConstruct,@PreDestroy等。

注解處理器的激活條件

AutowiredAnnotationBeanPostProcessor和CommonAnnotationBeanPostProcessor添加到spring容器的BeanPostProcessor的條件,即激活這些處理器的條件如下:

1.基于xml的spring配置

在對應的spring容器的配置xml文件中,如applicationContext.xml,添加<context:annotation-config />和<context:component-scan />,或者只使用<context:component-scan />。  兩者的區別是<context:annotation-config />只查找并激活已經存在的bean,如通過xml文件的bean標簽生成加載到spring容器的,而不會去掃描如@Controller等注解的bean,查找到之后進行注入;而<context:component-scan />除了具有<context:annotation-config />的功能之外,還會去加載通過basePackages屬性指定的包下面的,默認為掃描@Controller,@Service,@Component,@Repository注解的類。不指定basePackages則是類路徑下面,或者如果使用注解@ComponentScan方式,則是當前類所在包及其子包下面。

2.基于配置類的spring配置

如果是基于配置類而不是基于applicationContext.xml來對spring進行配置,如SpringBoot,則在內部使用的IOC容器實現為AnnotationConfigApplicationContext或者其派生類,在AnnotationConfigApplicationContext內部會自動創建和激活以上的BeanPostProcessor。  如果同時存在基于xml的配置和配置類的配置,而在注入時間方面,基于注解的注入先于基于XML的注入,所以基于XML的注入會覆蓋基于注解的注入。

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

向AI問一下細節

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

AI

綦江县| 蓝山县| 永顺县| 铜鼓县| 曲阳县| 雷州市| 茌平县| 仙游县| 昔阳县| 桃园县| 那坡县| 岱山县| 东乌| 新兴县| 吉林省| 汉阴县| 固镇县| 顺平县| 郴州市| 罗江县| 墨江| 新建县| 宜州市| 西和县| 收藏| 乌兰察布市| 翁牛特旗| 桐柏县| 西平县| 东明县| 咸丰县| 田阳县| 吉水县| 桐乡市| 安国市| 沽源县| 宁陵县| 洮南市| 乌兰察布市| 晋州市| 桑植县|