文档章节

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

Java技术栈
 Java技术栈
发布于 04/01 11:23
字数 1023
阅读 181
收藏 7

最近栈长面试了不少人,其中不乏说对 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 教程,转载请原样保留本信息。

© 著作权归作者所有

Java技术栈
粉丝 174
博文 165
码字总数 145318
作品 0
深圳
架构师
私信 提问
Spring Boot 面试,一个问题就干趴下了!(下)

前些天栈长在Java技术栈微信公众号分享一篇文章:Spring Boot 面试,一个问题就干趴下了!,看到大家的留言很精彩,特别是说"约定大于配置"的这两个玩家。 哈哈,上墙的朋友开不开森? 不错,...

Java技术栈
07/04
0
0
关于SpringCloud、SpringBoot 希望这是说得最详细的

几年前,没几个jar冲突一下都不叫搭框架 —— java面试必修 什么是Spring Boot 用我的话来理解,Spring Boot就是整合了框架的框架,它让一切依赖都变得有序简单,你不用操心A.jar是什么版本,...

阿郎_
2018/09/21
0
0
微服务 SpringBoot 2.0(一):简单入门构建

我做好了从入门到放弃的准备,你却告诉我炒鸡简单 —— Java面试必修 引言 SpringBoot是由Pivotal团队提供的全新框架,从最根本上来讲,Spring Boot就是简化开发人员从0构建项目的繁琐步骤,...

阿郎_
2018/09/22
0
0
吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!

面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望。 下面,我给大家总结下有...

Java技术栈
2018/10/15
0
0
微服务 SpringBoot 2.0(九):整合Mybatis

我是SQL小白,我选Mybatis —— Java面试必修 引言 在第五章我们已经整合了Thymeleaf页面框架,第七章也整合了JdbcTemplate,那今天我们再结合数据库整合Mybatis框架 在接下来的文章中,我会...

阿郎_
2018/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea下springboot 项目在static目录下添加文件不生效

idea下springboot 项目在static目录下添加文件不生效 问题描述 是这样子的,我的项目目录结构如下: 我在static目录下,创建了index.html和aaaa.jpg这两个文件。然后,启动服务访问 http://l...

wotrd
昨天
4
0
k8s1.14 一、环境

1. 4台虚拟机 (CentOS Linux release 7.2.1511 (Core) ) 192.168.130.211 master 192.168.130.212 node1 192.168.130.213 node2 192.168.130.214 node3 2. 设置服务器hostname 2.1 设置本机......

ThomasCheng
昨天
3
0
盖茨:如果我现在开创一家公司 将会专注于AI

新浪科技讯,北京时间 6 月 26 日凌晨消息,微软联合创始人比尔·盖茨(Bill Gates)在周一接受采访时表示,如果他今天从哈佛大学辍学并开创一家新公司,那么这家公司将会专注于人工智能(A...

linuxCool
昨天
1
0
聊聊feign的Retryer

序 本文主要研究一下feign的Retryer Retryer feign-core-10.2.3-sources.jar!/feign/Retryer.java public interface Retryer extends Cloneable { /** * if retry is permitted, retur......

go4it
昨天
9
0
HyperLogLog简介

  (1)HyperLogLog简介      在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个...

SEOwhywhy
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部