Spring-@Import 注解
它表示一个或多个 @Configuration 类被注入。
它提供和 XML 中 <import/>
一样的功能。它允许引入 @Configuration,ImportSelector 和 ImportBeanDefinitionRegistrar 实现类,从 Spring 4.2 起还支持引入普通的 component (类似于调用 AnnotationConfigApplicationContext#register 方法)。
导入的 @Configuration 类中声明的 @Bean 定义应使用 @Autowired 注入进行访问。可以对 bean 本身进行自动装配,也可以对声明 bean 的配置类实例进行自动装配。后一种方法允许在 @Configuration 类方法之间进行显式的,IDE友好的导航。
可以在类级别或作为元注释声明。
如果需要导入 XML 或其他非 @Configuration bean 定义资源,请改用 @ImportResource 批注。
一般用法
一般情况以 @Enable...
开头的注解,它里面会有 @Import 注解。因为 Spring 默认是扫描使用了 @SpringBootApplication
注解下的包,当你的类不在该默认下时,一般我们的做法是使用 @SpringBootApplication
的属性 scanBasePackages
或 scanBasePackageClasses
等,而 @Import
正好提供一种简便的方式,而且这种方法不需要你知道类路径或类名,对于第三方的 jar 包导入非常合适。
例如 spring-session 中的 @EnableSpringHttpSession。
所以当你写一个 Spring 工具类时,可以创建你自己的 @Enable... 注解来方便 jar 中 bean 的导入。ok 就说这么多吧。一般用法都是我的个人见解,如果有错误的地方请大家指正。