spring注解@Import的用法

這篇文章主要介紹“spring注解@Import的用法”,在日常操作中,相信很多人在spring注解@Import的用法問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”spring注解@Import的用法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、手機(jī)網(wǎng)站開發(fā)等網(wǎng)站方面業(yè)務(wù)。

【1】@Import

參數(shù)value接收一個(gè)Class數(shù)組,將你傳入的類以全類名作為id加入IOC容器中

比較簡(jiǎn)單,此處不做詳細(xì)解釋

【2】ImportSelector

ImportSelector強(qiáng)調(diào)的是復(fù)用性,使用它需要?jiǎng)?chuàng)建一個(gè)類實(shí)現(xiàn)ImportSelector接口,實(shí)現(xiàn)方法的返回值是字符串?dāng)?shù)組,也就是需要注入容器中的組件的全類名。id同樣也是全類名。

上代碼:

//自定義邏輯返回需要導(dǎo)入的組件public class MyImportSelector implements ImportSelector {  // 返回值就是導(dǎo)入到容器中的組件全類名  // AnnotationMetadata:當(dāng)前標(biāo)注@Import注解的類的所有注解信息  public String[] selectImports(AnnotationMetadata importingClassMetadata) {    return new String[] { "test.spring.ZhangSan", "test.spring.LiSi", "test.spring.WangWu" };  }}

【3】ImportBeanDefinitionRegistrar

spring官方就是用這種方式,實(shí)現(xiàn)了@Component、@Service等注解的動(dòng)態(tài)注入機(jī)制。定義一個(gè)ImportBeanDefinitionRegistrar的實(shí)現(xiàn)類,然后在有@Configuration注解的配置類上使用@Import導(dǎo)入

具體使用:創(chuàng)建一個(gè)ImportBeanDefinitionRegistrar的實(shí)現(xiàn)類,實(shí)現(xiàn)registerBeanDefinitions方法,對(duì)組件進(jìn)行注入。

public class MyBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {  /**   * @param annotationMetadata 當(dāng)前標(biāo)注@Import注解的類的所有注解信息   * @param beanDefinitionRegistry BeanDefinition的注冊(cè)類   */  public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {    RootBeanDefinition beanDefinition = new RootBeanDefinition(Cat.class);    beanDefinitionRegistry.registerBeanDefinition("cat",beanDefinition);  }}

配置類MyConfig:

@Configuration@Import(value = {MyBeanDefinitionRegistrar.class})public class MyConfig {}/**測(cè)試結(jié)果beanName: org.springframework.context.annotation.internalConfigurationAnnotationProcessorbeanName: org.springframework.context.annotation.internalAutowiredAnnotationProcessorbeanName: org.springframework.context.annotation.internalCommonAnnotationProcessorbeanName: org.springframework.context.event.internalEventListenerProcessorbeanName: org.springframework.context.event.internalEventListenerFactorybeanName: myConfigbeanName: cat*/

到此,關(guān)于“spring注解@Import的用法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章名稱:spring注解@Import的用法
分享URL:http://muchs.cn/article4/iidsie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)營(yíng)銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、云服務(wù)器網(wǎng)站改版用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)