查看原文
其他

Spring Boot 面试,一个问题就问趴下了!

程序人生 2019-10-30

以下文章来源于Java技术栈 ,作者栈长

作者 | 栈长
责编 | 伍杏玲
本文经授权转载自Java技术栈 (ID:javastack)

最近我面试了不少人,其中不乏说对 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 包依赖:

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.10</version>
</dependency>
再添加相关参数:
spring.datasource.url= 
spring.datasource.username=
spring.datasource.password=
……
如果是传统的项目,我们要自己手动写一大堆的配置,而且还不灵活,有了这个启动器,我们就可以做到简单集成。具体大家可以看 druid-spring-boot-starter 是怎么实现的,也可以参考之前写的文章:Spring Boot自动配置原理、实战。

所以,这才是 Spring Boot 的核心,这才是我们为什么使用 Spring Boot 的原因。如果答不到这个关键点,那真没有掌握到 Spring Boot 的核心所在。

--------面试题盘点分割线--------

正值金九银十找工作季,大家喜欢这种面经分享吗?还想看哪些技术干货分享或大厂面经,欢迎来留言哦!

以下是程序人生以往分享的一些面试题,希望助力大家的面试,欢迎点赞、收藏、转发~

横扫阿里、滴滴、美团后,阿里程序媛整理出这份厚厚的面经!

Java 面试复习啥?看这 208 道面试题就够了!

Java 面试宝典!并发编程 71 道题及答案全送上!

面试稳了!BATJ 等大厂 400+ 道面试题全汇总!

今日头条校招面经来了!| CSDN 博文精选

400 道前端面试题!阿里、头条、网易等 19 家大厂面经全公开!

这位程序媛是如何拿下 BAT 等 7 家名企 Offer的?面经就在这!

一年Android工作经验,阿里/百度/网易/美团/小米/快手面经

前端高频面试题及答案汇总!

春招面经来了!

我是如何在阿里巴巴面试中壮烈牺牲的?(内含面试题)

跳槽季如何快速全面复习面试题

百度秋招二轮面试——血淋淋的经验分享

【少走弯路多加薪】一个菜鸟“面霸”的面试经历

BAT 七年经验,却抵不过外企面试的两道算法题?

程序员装逼被怼,决定用面试证明自己,结果......


 热 文 推 荐 逃离苹果
你还在@微信官方?用 Python 随意生成你想要的微信头像!@程序员,第一份工作薪资不重要?2019云栖大会:逍遥看巅峰,张勇提“百新”,平头哥“再亮剑”

小米推出售价 19999 元的 MIX Alpha;高通已向华为重启供货;.NET Core 3.0 发布 | 极客头条

限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!

Python老司机给上路新手的3点忠告比特币又跌了, 还是赶紧学学比特币区块大小限制的原理, 原来并非越来越好!☞厉害!接班马云的为何是张勇?
你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存