SpringBoot2底层注解@Import用法详解

 更新时间:2022年05月28日 09:29:39   作者:把苹果咬哭的测试笔记  
这篇文章主要为大家介绍了SpringBoot2底层注解@Import用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

SpringBoot2注解@Import

上一篇中了解到了@Configuration,可以注册组件。除此之外,还有许多注解也可以,用法跟之前学习 spring 的时候一样。
比如,@Bean@Component@Controller@Service@Repository等。

这篇介绍另外一种给容器添加组件的方法:@Import注解,给容器中导入组件。

@Import 导入组件

用法

@Import的用法很简单,放在任意配置类或者组件里面都可以。

另外,它还是数组,所以可以导入多个组件。比如:

@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false)
public class MyConfig {
    @Bean("user1")
    public User user01(){
        User pingguo = new User("pingguo",20);
        pingguo.setPet(tomcatPet());
        return pingguo;
    }
    @Bean("pet1")
    public Pet tomcatPet(){
        return new Pet("tomcat");
    }
}

这里导入了 2 个组件,分别是User.classDBHelper.class

其中 User.class 是之前我自定义的类,而DBHelper.class是随便找的一个第三方包下的类。

写好之后,@Import就可以给容器中自动创建出这 2 个类型的组件。

验证

验证一下,容器中是否存在上述的 2 个组件。

代码还是加在 main 方法里,把全部代码放出来,方便后续查看。

// 标记这是一个 springboot应用,这个类是主程序类,所有启动的入口
@SpringBootApplication(scanBasePackages = "com.pingguo")
public class MainApplication {
    public static void main(String[] args) {
        // 返回IOC容器
        final ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        // 查看容器里的组件
        final String[] beanDefinitionNames = run.getBeanDefinitionNames();
        for (String name: beanDefinitionNames) {
            System.out.println(name);
        }
        // 从容器中获取组件
        MyConfig bean = run.getBean(MyConfig.class);
        System.out.println("配置类也是组件:" + bean);
        User user1 = bean.user01();
        User user2 = bean.user01();
        System.out.println(user1 == user2);
        // 依赖关系
        User user01 = run.getBean("user1", User.class);
        Pet pet1 = run.getBean("pet1", Pet.class);
        System.out.println("依赖:" + (user01.getPet() == pet1));
        // @Import 组件
        String[] beanNamesForType = run.getBeanNamesForType(User.class);
        System.out.println("====获取 User 类型的 bean ====");
        for (String s : beanNamesForType) {
            System.out.println(s);
        }
        System.out.println("====获取 DBHelper 类型的 bean ====");
        DBHelper bean1 = run.getBean(DBHelper.class);
        System.out.println(bean1);
    }
}

看最后// @Import 组件相关的代码。

这里因为之前学习中注册过多个 User 类型的组件,所以遍历一下打印输出。

运行结果中,可以看到有2个 User 类型的 bean,分别是user1和com.pingguo.boot.bean.User。

对于user1,是之前使用@bean注册的。

而对于com.pingguo.boot.bean.User,则是这次使用Import导入进去的,默认组件名是全类名。

最后一个ch.qos.logback.core.db.DBHelper@4943defe,这是导入的第三方的包的类,成功在容器中注册了组件。

以上就是SpringBoot2底层注解@Import用法详解的详细内容,更多关于SpringBoot2注解@Import的资料请关注脚本之家其它相关文章!

相关文章

  • Spring Boot 快速使用 HikariCP 连接池配置详解

    Spring Boot 快速使用 HikariCP 连接池配置详解

    Spring Boot 2.x 将其作为默认的连接池组件,项目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模块后,HikariCP 依赖会被自动引入,这篇文章主要介绍了Spring Boot使用HikariCP连接池配置详解,需要的朋友可以参考下
    2023-06-06
  • springboot结合mybatis操作事务配置的处理

    springboot结合mybatis操作事务配置的处理

    在操作数据库的时候,经常会使用事务的处理,本文主要介绍了springboot结合mybatis操作事务配置的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • 详解前后端分离之Java后端

    详解前后端分离之Java后端

    这篇文章主要介绍了详解前后端分离之Java后端,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java如何实现CIDR转IP段

    Java如何实现CIDR转IP段

    CIDR是一种用于高效分配和管理 IP 地址的网络编址方法,这篇文章主要为大家详细介绍了如何使用Java实现CIDR转IP段,感兴趣的小伙伴可以参考一下
    2025-03-03
  • 浅析对Java关键字final和static的理解

    浅析对Java关键字final和static的理解

    本文主要给大家谈谈小编对java关键字final和static的理解,本文给大家介绍的较详细,需要的朋友参考参考下
    2017-04-04
  • SpringMVC超详细介绍自定义拦截器

    SpringMVC超详细介绍自定义拦截器

    Spring MVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。本文将代码演示和文字描述详解拦截器的原理与使用
    2022-06-06
  • Java设计模式之桥模式(Bridge模式)介绍

    Java设计模式之桥模式(Bridge模式)介绍

    这篇文章主要介绍了Java设计模式之桥模式(Bridge模式)介绍,本文讲解了为什么使用桥模式、如何实现桥模式、Bridge模式在EJB中的应用等内容,需要的朋友可以参考下
    2015-03-03
  • 浅谈Java文件被执行的历程

    浅谈Java文件被执行的历程

    学习java以来,都是以语法,类库入手,最基本的也是最基础的java编译过程往往被我遗忘,先解释一下学习java第一课时,都听到过的一句话,“java是半解释语言”。什么是半解释语言。本文将介绍Java文件被执行的历程。
    2021-06-06
  • Spring AOP 的实现和切点表达式的实现方式

    Spring AOP 的实现和切点表达式的实现方式

    本文给大家介绍了Spring AOP的基本概念、通知类型、切点表达式和切面优先级,并通过示例代码展示了如何实现这些功能,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • SpringBoot整合logback的示例代码

    SpringBoot整合logback的示例代码

    Logback是由log4j创始人设计的又一个开源日志组件,logback分为三个模块,在文章开头给大家介绍的很明确,接下来通过本文重点介绍下SpringBoot整合logback的方法,需要的朋友可以参考下
    2022-04-04

最新评论