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

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  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 {

}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄