导读:@Import 和 @ImportResource或许很多人都用过,并且都还没有用错。但是若真把他俩拿过来一起的时候,却有点傻傻分不清楚了。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发
在平时看源码或者很多配置类上面都会出现@Import注解,功能就是和Spring XML 里面 的 一样. @Import注解是用来导入配置类或者一些需要前置加载的类.
一、背景
@Import和@ImportResource是的,他俩都有导入的含义,但是使用起来还是有很大的区别的,因此本文主要针对于他俩的区别,顺便从一定的原理的角度做一个解释,希望大家以后能区分开来。
在讲解之前,可以记住一个通用的的结论:
-
@Import主要用于导入类对象与另一个类对象的依赖;
-
@ImportResource主要用于在SpringBoot中显示指定从自定义的配置文件中生成bean而不是通过@Bean注解生成Bean
本文主要详解@Import 结合一些案例场景分析,后续有时间针对@Import 和 @ImportResource 进行对比讲解。总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发。
二、@Import 注解解读
▐ 导读配置的三种类型
@Import支持 三种方式
-
带有@Configuration的配置类(4.2 版本之前只可以导入配置类,4.2版本之后 也可以导入普通类)
-
ImportSelector 的实现
-
ImportBeanDefinitionRegistrar 的实现
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {
/**
* {@link Configuration @Configuration}, {@link ImportSelector},
* {@link ImportBeanDefinitionRegistrar}, or regular component classes to import.
*/
Class<?>[] value();
}