最近栈长面试了不少人,其中不乏说对 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技术栈微信公众号,在后台回复:boot,获取栈长整理的更多的 Spring Boot 教程,都是实战干货,以下仅为部分预览。

  • Spring Boot 读取配置的几种方式
  • Spring Boot 如何做参数校验?
  • Spring Boot 最核心的 25 个注解!
  • Spring Boot 2.x 启动全过程源码分析
  • Spring Boot 2.x 新特性总结及迁移指南
  • ……

本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "boot" 可获取更多 Spring Boot 教程,转载请原样保留本信息。

转载于:https://www.cnblogs.com/javastack/p/10635333.html

Spring Boot 面试,一个问题就干趴下了!相关推荐

  1. Spring Boot 面试杀手锏:自动配置原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观望态度外,如 ...

  2. Spring Boot 面试问题

    Spring Boot 面试问题 今天我们将研究一些春季靴子面试的问题和答案.到目前为止,我们已经讨论了一些关于Spring BootFramework的帖子以及一些实时示例.在这篇文章中,我将向您简 ...

  3. spring boot面试_Spring Boot面试问题

    spring boot面试 Today we will look into some spring boot interview questions and answers. So far, we h ...

  4. Spring Boot 面试杀手锏—自动配置原理

    点击关注公众号,回复"1024"获取2TB学习资源! 引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观 ...

  5. Spring Boot面试的终极指南

    在本文中,我们探讨了针对经验丰富或新手的Spring Boot面试问答.我们正在尝试分享经验和知识,以帮助您提升作为Spring Boot Developer的职业. 问:什么是Spring Boot ...

  6. Spring Boot面试杀手锏————自动配置原理

    引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框 ...

  7. 面试那点小事,你从未见过的spring boot面试集锦(附详细答案)

    一, 什么是spring boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问页面https://spring.io/projects,我们将看到所有在应用程序中使用的不同功能的 ...

  8. spring cloud教程之使用spring boot创建一个应用

    <7天学会spring cloud>第一天,熟悉spring boot,并使用spring boot创建一个应用. Spring Boot是Spring团队推出的新框架,它所使用的核心技术 ...

  9. 使用React和Spring Boot构建一个简单的CRUD应用

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Reac ...

  10. 利用spring boot 写一个稳定的爬虫

    1.前言 这篇文章是利用spring boot 写一个稳定的爬虫,爬取的网页数据包含未执行js的网页数据.http/https接口的请求数据.和经过网页渲染的js数据(需要chorme浏览器),数据库 ...

最新文章

  1. Kafka的生产者优秀架构设计
  2. 高校新校园网络系统设计方案
  3. elasticsearch 9300端口连接不上_SpringBoot2.x系列教程54--SpringBoot整合ElasticSearch方式一...
  4. [转] 视频直播前端方案
  5. 解决matplotlib中文乱码问题
  6. Python超越Java语言,跃居世界编程语言第2位了!你却还在犹豫学不学Python?
  7. NET Core入门笔记
  8. [vue] vue-loader是什么?它有什么作用?
  9. 看这玩意复习你还会挂科?《网络原理篇》
  10. 大数据新手之路四:联合使用Flume和Kafka
  11. SAP License:搞砸SAP项目的3种方法
  12. MATLAB信号处理之信号的积分和微分
  13. linux ulimit知识
  14. 主子式大于等于零的矩阵是半正定矩阵的证明方法之一
  15. 最新2022亲测可用的免费google翻译api
  16. Builder模式的简单示例
  17. 盘点几个在手机上可以用来学习编程的软件
  18. C#,VB.NET如何将Word转换为PDF和Text
  19. APScheduler定时任务
  20. 淘宝人群拖价怎么做? 大神导航,一个神奇的网站,从此开启大神之路!

热门文章

  1. JSON||获取数据||json数据语法
  2. 计算机组成原理—— 指令系统
  3. JSON动态解析()
  4. Jyputer 项目工程设置Github同步,本地代码上传Github实例演示
  5. Python 技术篇-通过pip命令下载python库到指定位置不用安装方法,查看pip下载库的源码实例演示,pip命令大全
  6. 下边框_OPPO Find X2颜值有多高?超窄下边框+瀑布屏,看完大写的服气
  7. 爬取广州所有停车场数据(Python)
  8. Python通过一个网页地址获得网页标题Title
  9. mke2fs和mkfs命令使用
  10. Netlink 介绍(译)