每日一面之Boot篇:讲一讲SpringBoot的自动装配吧
面试是一个短时交流的过程,这个过程中包涵首因效应的管理,晕轮效应的管理,如何做好面试管理对求职者至关重要。作为Java的学者,面试题是面试官考量我们的一个基本标准,尤其是对于没有实际项目经验的大学生,本专栏专门针对一切比较常见的问题做出整理,欢迎各位投稿、订阅本专栏,每日分享一个面试小技巧和一篇面试题,细水长流,大家一起加油。
面试技巧:管住自己的嘴巴,三思而后答
切记面试的问题每一个都不要问了就直接答复,稍作停留,整理思路,
该答复的答复,不是问题的点不要轻易涉及,除非你对此很熟悉
面试官:讲一讲SpringBoot的自动装配吧
沉思后答:
嗯。。。。。
SpringBoot 里面的自动装配,简单来说就是自动把第三方组件的Bean装载到Spring IOC容器里面,而不需要开发人员再去专门写Bean的装配配置。
'在SpringBoot里面,只需要再启动类加上@SpringBootApplication注解就可以实现自动装配'
而SpringBoot是一个复合型的注解,真正实现装配的是@EnableAutoConfiguration
@EnableAutoConfiguration实现自动装配呢,主要依靠三个核心的关键技术
1、引入Starter启动依赖组建的时候呢,这个组件必须包含@Configuration配置类,在这个配置类里面通过@Bean注解声明需要装配到IOC容器的Bean对象
2、这个配置类是放在第三方Jar包里面的,然后通过SpringBoot约定大于配置的思想,把这个配置类的全路径放在了classpath:/MATE-INF/spring.factories文件中。这样的话Spring就知道第三方Jar包里面配置类的位置,而这个过程呢,主要是通过Spring里面的SpringFactoryLoader来完成的。
3、SpringBoot拿到了第三方jar文件里面生命的配置类有以后呢,在通过Spring的ImportSelector接口,来实现对这个配置类的动态加载。
其实,SpringBoot就是约定大于配置这一设计理念下的产物,所以在里面会有很多地方都可以看到这类思想的实现。而这类设计理念,可以让我们开发人员更专注于核心业务代码的编写,而不用去关注那些只做一次的与业务无关的配置。
而且,自动装配的思想在SpringFramework3.x的版本里面,就已经有了实现的雏形,就是@Enable注解。Enable注解是模块驱动的意思,我们只需要增加某个@Enable注解就能自动打开某个功能,而不需要去针对这个功能去做Bean的配置,@Enable底层也是帮我们去自动完成这个模块相关Bean的注入。
以上呢,就是我对Spring Boot 自动装配机制的理解。
其实我们让面试官知道的,不是我们对于问题答复的多少,而是我们对于这个技术领域理解的深度和自己的见解,从而让面试官在一大堆求职者中,对我们产生清晰的印象,平时我们在背诵八股文的时候,也不要只是会刻板的记忆,尝试跟身边的朋友或对着镜子自己讲解几遍,就能产生自己的话术去描述去回答问题。