Spring 中 @Import 注解三种使用场景解读

导读:@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();

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@Import注解Spring注解之一,用于导入其他的配置类或者普通的类,从而使它们成为当前配置类的一个Bean。可以用在@Configuration注解的类,或者用在普通的类作为一个注解使用方法: 1. 导入配置类:可以将一个或多个@Configuration注解的配置类导入到当前配置类,以便使用的Bean。示例代码如下: ```java @Configuration @Import({Config1.class, Config2.class}) public class AppConfig { // ... } ``` 2. 导入普通类:可以将一个或多个非@Configuration注解的普通类导入到当前配置类,以便使用的Bean。示例代码如下: ```java @Configuration @Import({Service1.class, Service2.class}) public class AppConfig { // ... } ``` 3. 导入ImportSelector实现类:可以将一个实现了ImportSelector接口的类导入到当前配置类,该类可以动态地选择要导入的类。示例代码如下: ```java @Configuration @Import(MyImportSelector.class) public class AppConfig { // ... } ``` 4. 导入ImportBeanDefinitionRegistrar实现类:可以将一个实现了ImportBeanDefinitionRegistrar接口的类导入到当前配置类,该类可以动态地注册Bean定义。示例代码如下: ```java @Configuration @Import(MyImportBeanDefinitionRegistrar.class) public class AppConfig { // ... } ``` 5. 导入FactoryBean:可以将一个实现了FactoryBean接口的类导入到当前配置类,以便使用的Bean。示例代码如下: ```java @Configuration @Import(MyFactoryBean.class) public class AppConfig { // ... } ``` 需要注意的是,@Import注解只是将其他的类导入到当前配置类,而并不会自动将其实例化为Bean。如果需要使用导入的类的Bean,需要在当前配置类通过@Bean注解手动创建相应的Bean。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值