javascript
Spring注解@Import详细使用说明
文章目錄
- 一、@Import解釋
- 二、@Import有三種使用方法
- 1、直接填class數(shù)組方式
- 2、實(shí)現(xiàn)ImportSelector接口
- 3、實(shí)現(xiàn)ImportBeanDefinitionRegistrar接口
寫在前面:
我是「境里婆娑」。我還是從前那個少年,沒有一絲絲改變,時間只不過是考驗(yàn),種在心中信念絲毫未減,眼前這個少年,還是最初那張臉,面前再多艱險不退卻。
寫博客的目的就是分享給大家一起學(xué)習(xí)交流,如果您對 Java感興趣,可以關(guān)注我,我們一起學(xué)習(xí)
前言:@Import作用是將某個類或者第三方j(luò)ar包中類加載到Spring容器中,以便我們能在容器中使用。
一、@Import解釋
- @Import只能用在類上
- @Import通過快速導(dǎo)入的方式實(shí)現(xiàn)把實(shí)例加入spring的IOC容器中
- @Import注解可以用于導(dǎo)入第三方包
二、@Import有三種使用方法
@Import的三種用法:
1、直接填class數(shù)組方式
直接填對應(yīng)的class數(shù)組,class數(shù)組可以有0到多個
@Import({Person.class,Car.class) @Configuration public class MyConfig { }啟動工程運(yùn)行結(jié)果:
import的bean都將加入到spring容器中,這些在容器中bean名稱是該類的全類名
2、實(shí)現(xiàn)ImportSelector接口
這種方式要實(shí)現(xiàn)ImportSelector接口。
創(chuàng)建MyImportSelector并實(shí)現(xiàn)ImportSelector接口
public class MyImportSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {Set<String> annotationTypes = importingClassMetadata.getAnnotationTypes();return new String[]{"com.sl.entity.Car"};} }將此實(shí)現(xiàn)類MyImportSelector添加到容器中
@Import({Person.class,MyImportSelector.class}) @Configuration public class MyConfig { }啟動工程運(yùn)行結(jié)果:
實(shí)現(xiàn)接口的selectImports方法中需要注意三點(diǎn)
- 返回值: 實(shí)際上要導(dǎo)入到容器中的組件全類名
- 參數(shù): AnnotationMetadata表示當(dāng)前被@Import注解給標(biāo)注的所有注解信息
- 需要注意的是selectImports方法可以返回空數(shù)組但是不能返回null,否則會報空指針異常!
3、實(shí)現(xiàn)ImportBeanDefinitionRegistrar接口
創(chuàng)建MyImportBeanDefinitionRegistrar接口
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(Car.class);registry.registerBeanDefinition("car",rootBeanDefinition);} }將此實(shí)現(xiàn)類MyImportBeanDefinitionRegistrar添加到容器中
@Import({Person.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class}) @Configuration public class MyConfig { }啟動工程運(yùn)行結(jié)果:
registerBeanDefinitions參數(shù)解釋:
- annotationMetadata 和之前的ImportSelector參數(shù)一樣都是表示當(dāng)前被@Import注解給標(biāo)注的所有注解信息
- registry第二個參數(shù)表示用于注冊定義一個bean
以上三種用法方式皆可混合在一個@Import中使用,特別注意第一種和第二種都是以全類名的方式注冊,而第三中可自定義方式
總結(jié)
以上是生活随笔為你收集整理的Spring注解@Import详细使用说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中如何将List拆分为多个小li
- 下一篇: SpringBoot中Profile配置