Spring框架中的org.springframework.context.annotation.Import注解类

@Import注解的作用和在使用spring的xml配置时用到的<import/>类似。但应注意是@Import在使用时必须要保证能被IOC容器扫描到,所以通常它会和@Configuration或者@ComponentScan配套使用。

@Import可以用来如下四种方式的导入:

  1. 带有@Configuration注解的类
  2. 实现了ImportSelector接口的类
  3. 实现了ImportBeanDefinitionRegistrar接口的类
  4. 被IOC容器注册的bean的class 

@Import在使用时可以声明在JAVA类上,或者作为元注解使用(即声明在其他注解上)

下面是@Import的源码:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {

    /**
     * {@link Configuration}, {@link ImportSelector}, {@link ImportBeanDefinitionRegistrar}
     * or regular component classes to import.
     */
    Class<?>[] value();

}

 下面是@Import作为元注解进行使用的场景:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({AuthorizationServerEndpointsConfiguration.class, AuthorizationServerSecurityConfiguration.class})
public @interface EnableAuthorizationServer {

}
原文地址:https://www.cnblogs.com/hzhuxin/p/10742577.html