欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring注解@Import用法詳解

 更新時間:2019年10月25日 08:58:04   作者:ねぇ  
這篇文章主要介紹了spring注解@Import用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

【1】@Import

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

​比較簡單,此處不做詳細解釋

【2】ImportSelector

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

​ 上代碼:

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

【3】ImportBeanDefinitionRegistrar

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

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

public class MyBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
  /**
   * @param annotationMetadata 當前標注@Import注解的類的所有注解信息
   * @param beanDefinitionRegistry BeanDefinition的注冊類
   */
  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 {
}

/**測試結(jié)果
beanName: org.springframework.context.annotation.internalConfigurationAnnotationProcessor
beanName: org.springframework.context.annotation.internalAutowiredAnnotationProcessor
beanName: org.springframework.context.annotation.internalCommonAnnotationProcessor
beanName: org.springframework.context.event.internalEventListenerProcessor
beanName: org.springframework.context.event.internalEventListenerFactory
beanName: myConfig
beanName: cat
*/

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論