Spring Boot 面试,一个问题就问趴下了!
以下文章来源于Java技术栈 ,作者栈长
最近我面试了不少人,其中不乏说对 Spring Boot 非常熟悉的,然后当我问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了!
这是我的问题:
我看你上面写了熟悉 Spring Boot,那你能讲下为什么我们要用 Spring Boot 吗?
下面我列几个最常见的三个回答:
A:Spring Boot 最主要是不用 XML 配置,可以用 Java 来配置 bean,省去了许多配置文件。
我又问:Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么关系呢?
然后对方就吱吱唔唔了……
B:Spring Boot 我们用来做 Spring Cloud 微服务。
我又问:微服务和 Spring Boot 有什么关系?不用 Spring Boot 行不行?
然后对方就吱吱唔唔了……
C:Spring Boot 可以打 jar 包部署,内部集成了Tomcat。
这个确实是 Spring Boot 的特色,但是我还是觉得没有答到关键点上。
然后我继续问,如果不考虑打 Jar 包部署呢,然后就没然后了……
为什么我们要用 Spring Boot,显然上面三个求职者没有答到关键点上,Spring Boot 最重要的功能是:自动配置。
为什么说是自动配置?
Spring Boot 的开启注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:
@Configuration
@ComponentScan
@EnableAutoConfiguration
上面三个注解,前面两个都是 Spring 自带的,和 Spring Boot 无关,所以说上面的回答的不是在点上。具体请看这篇文章:Spring Boot 最核心的 3 个注解详解。
所以说 Spring Boot 最最核心的就是这个 @EnableAutoConfiguration 注解了,它能根据类路径下的 jar 包和配置动态加载配置和注入bean。
举个例子,比如我在 lib 下放一个 druid 连接池的 Jar 包,然后在 application.yml 文件配置 druid 相关的参数,Spring Boot 就能够自动配置所有我们需要的东西,如果我把 jar 包拿掉或者把参数去掉,那 Spring Boot 就不会自动配置。
这样我们就能把许多功能做成公共的自动配置的启动器(starters),其实 druid 连接池就是这么做的,它提供了针对 Spring Boot 的启动器:druid-spring-boot-starter。
有了这个自动配置的启动器,我们就能非常简单的使用它,
先添加 Jar 包依赖:
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
spring.datasource.username=
spring.datasource.password=
……
所以,这才是 Spring Boot 的核心,这才是我们为什么使用 Spring Boot 的原因。如果答不到这个关键点,那真没有掌握到 Spring Boot 的核心所在。
--------面试题盘点分割线--------
正值金九银十找工作季,大家喜欢这种面经分享吗?还想看哪些技术干货分享或大厂面经,欢迎来留言哦!
以下是程序人生以往分享的一些面试题,希望助力大家的面试,欢迎点赞、收藏、转发~
400 道前端面试题!阿里、头条、网易等 19 家大厂面经全公开!
这位程序媛是如何拿下 BAT 等 7 家名企 Offer的?面经就在这!
一年Android工作经验,阿里/百度/网易/美团/小米/快手面经
☞你还在@微信官方?用 Python 随意生成你想要的微信头像!☞@程序员,第一份工作薪资不重要?☞2019云栖大会:逍遥看巅峰,张勇提“百新”,平头哥“再亮剑”
☞小米推出售价 19999 元的 MIX Alpha;高通已向华为重启供货;.NET Core 3.0 发布 | 极客头条
☞限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!
☞Python老司机给上路新手的3点忠告☞比特币又跌了, 还是赶紧学学比特币区块大小限制的原理, 原来并非越来越好!☞厉害!接班马云的为何是张勇?