什么是SpringBoot
SpringBoot的作用
SpringBoot的优点
SpringBoot的核心配置文件是什么,有何区别?
SpringBoot的配置文件有几种格式,区别是什么?
SpringBoot读取配置文件的几种方式
Spring Boot 如何定义多套不同环境配置
SpringBoot的常用注解有哪些?
如何理解SpringBoot中的Starters
如何在 Spring Boot 启动的时候运行一些特定的代码?
如何控制多个ApplicationRunner、CommandLineRunner的启动顺序(优先级)?
SpringBoot如何配置多个DispatcherServlet
SpringBoot的自动配置原理
Spring Boot中的监视器是什么?
Spring SpringMVC SpringBoot以及SpringCloud之间存在什么样的关系?
SpringBoot中如何解决跨域问题
SpringBoot打成的jar和普通的jar有什么区别?
SpringBoot内嵌了哪些web容器,区别是什么,内嵌容器的优点是什么?
什么是SpringBoot
SpringBoot是Spring开源组织下的子项目,是Spring组件的一站式解决方案。

SpringBoot的作用
简化了开发者使用Spring的难度,以约定大于配置的原则,减少了Spring集成各种组件的配置,让开发者更快速的上手。

SpringBoot的优点
快速创建独立运行的spring项目与主流框架集成
内嵌servlet容器,可直接打成jar包运行
用spring-boot-starter-* 实现了各种组件自动依赖与版本控制
与云计算的天然集成
可修改的自动配置,降低了开发难度
避免大量的Maven导入和各种版本冲突
SpringBoot的核心配置文件是什么,有何区别?
SpringBoot的核心配置文件是application和bootstrap配置文件。
区别:
application:主要用于 Spring Boot 项目的自动化配置
bootstrap:
(1)主要用于从额外的资源来加载配置信息
(2)bootstrap优先加载
(3)bootsrap中的属性不能被覆盖
(4)主要用于:一些固定的不能被覆盖的属性和加密/解密等场景

SpringBoot的配置文件有几种格式,区别是什么?
application.properties和application.yml,它们的区别主要是书写格式不同。

properties:
app.user.name = root
app.user.password = root

yml:
app:
    user:
        name: root
        password: root
注:yml 格式不支持 @PropertySource 注解导入配置

SpringBoot读取配置文件的几种方式
《Spring Boot读取配置的几种方式》

Spring Boot 如何定义多套不同环境配置
《Spring Boot Profile 不同环境配》

SpringBoot的常用注解有哪些?
@Service: 注解在类上,表示这是一个业务层bean
@Controller:注解在类上,表示这是一个控制层bean
@Repository: 注解在类上,表示这是一个数据访问层bean
@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写
@Autowired:按类型注入.默认属性required= true;required = false:在找不到匹配Bean时也不抛出BeanCreationException 异常。
@Bean: 注解在方法上,声明当前方法返回一个Bean
@Configuration:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。
@ConfigurationProperties   赋值,将注解转换成对象。

核心注解:
@SpringBootApplication(混合注解)=@ComponentScan+@Configuration+@EnableAutoConfiguration:约定优于配置
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项
@ComponentScan:Spring组件扫描

如何理解SpringBoot中的Starters
Starters可以理解为启动器
它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。
Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。

如何在 Spring Boot 启动的时候运行一些特定的代码?
实现接口 ApplicationRunner 或者 CommandLineRunner,它们都提供了一个 run 方法

如何控制多个ApplicationRunner、CommandLineRunner的启动顺序(优先级)?
实现org.springframework.core.Ordered接口或者使用org.springframework.core.annotation.Order注解。
Order注解:默认是最低优先级,参数值越小优先级越高
Ordered接口:最高级(数值最小)和最低级(数值最大)

SpringBoot如何配置多个DispatcherServlet
SpringBoot2.X之前使用ServletRegistrationBean进行配置。
Spring2.X对ServletRegistrationBean进行了重新设计。
使用DispatcherServletRegistrationBean来继承ServletRegistrationBean类。
我们使用DispatcherServletRegistrationBean进行配置即可。

关于两者之间使用上的差别参考以下两篇文章

《DispatcherServletRegistrationBea配置DispatcherServlet》

《ServletRegistrationBean配置DispatcherServlet》

SpringBoot的自动配置原理
SpringBoot使用@EnableAutoConfiguration注解来实现自动配置。
而@Configuration,@ConditionalOnClass就是自动配置的核心。
首先它得是一个配置文件(META-INF/spring.factories);
其次根据类路径下是否有这个类去自动配置。

《Spring Boot自动配置原理、实战》

《SpringBoot自动配置原来》

Spring Boot中的监视器是什么?
Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 
通过这种依赖关系监控我们的应用程序,收集指标,了解流量或数据库的状态变得简单易行。
Actuator主要用于公开有关正在运行的应用程序的运行信息 - 运行状况,指标,信息,转储,env等等。
以下是Boot提供的一些最常见的端点:
/health - 显示应用程序运行状况信息(通过未经身份验证的连接访问时的简单“状态”或经过身份验证时的完整详细信息); 它默认不敏感
/info -显示任意应用程序信息; 默认情况下不敏感
/metrics -显示当前应用程序的“指标”信息; 它默认是敏感
/trace -显示跟踪信息(默认情况下是最后几个HTTP请求,SpringBoot 1.X中可用)

更多详情参考《服务监控 Spring Boot Actuator 介绍》

Spring SpringMVC SpringBoot以及SpringCloud之间存在什么样的关系?
首先它们都属于Spring大家族。
其次,它们之间的概念:
Spring:一个轻量级的控制反转(IoC)和面向切面(AOP)的容器
SpringMVC:一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等
SpringBoot:Spring的一套快速配置脚手架,开发者可以快速、简单的上手Spring开发。
SpringCloud:一种云端分布式架构解决方案,基于SpringBoot,有者一套成熟的服务费开发组件。
总结:
SpringMVC是使用Spring进行Web开发的一套MVC框架;
而SpringBoot是基于Spring的一套快速开发整合包;
SpringCloud是注重的是微服务开发,更关注的是全局微服务的整合和管理,依赖于SpringBoot。

更多详情参考

《Spring SpringMVC SpringBoot SpringCloud概念、关系及区别》

《Spring、SpringMvc、SpringBoot和SpringCloud的联系与区别》

SpringBoot中如何解决跨域问题
在前端,我们可以使用JSONP来解决,但是JSONP只能发送Get请求
在后端,我们可以使用CORS来解决跨域问题。
通常是使用springboot的自动配置全局设置CorsFilter来解决。
同时我们也可以在Controller使用@CrossOrigin注解来局部设置

更多详情参考《SpringBoot解决跨域问题》

SpringBoot打成的jar和普通的jar有什么区别?
SpringBoot项目最终打包成的 jar是可执行jar.
这种jar可以直接通过java -jar xxx.jar 命令来运行.
这种jar不可以作为普通的jar被其他项目依赖,即使依赖了也无法使用其中的类。
虽然都是jar包,但是内部结构是完全不同的,因此一个可以直接执行,另一个则可以被其他项目依赖。

更多详情参考《SpringBoot打包的jar包与普通的jar包有什么区别》

SpringBoot内嵌了哪些web容器,区别是什么,内嵌容器的优点是什么?
Spring Boot内嵌容器支持Tomcat、Jetty、Undertow
区别:内嵌Tomcat、Jetty无法执行jar形式的jsp;Undertow不支持JSP。其中Undertow性能上更优秀一些,Tomcat为默认的web容器。
内嵌容器的优点:减少外部容器依赖,可移植性高、易测试、易部署

SpringBoot常见面试题的更多相关文章

  1. 这10道springboot常见面试题你需要了解下

    ​ 1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的 ...

  2. 面试阿里,字节,腾讯90%被问到的springboot常见面试题,这次给你讲的明明白白!

    1.什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂.只需访问https://spring.io/projects页面,我们就会看到可以在我们的应用程序中使用的所有 ...

  3. 夯实Java基础系列16:一文读懂Java IO流和常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. Spring 常见面试题总结 | JavaGuide

    首发于 JavaGuide 在线网站:Spring 常见面试题总结 最近在对 JavaGuide 的内容进行重构完善,同步一下最新更新,希望能够帮助你. Spring 基础 什么是 Spring 框架 ...

  5. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  6. Web开发的常见面试题HTML和HTML5等

    作为一名前端开发人员,HTML,HTML5以及网站优化都是必须掌握的技术,下面列举一下HTML, HTML5, 网站优化等常见的面试题: HTML常见面试题: 1. 什么是Semantic HTML( ...

  7. 常见面试题之ListView的复用及如何优化

    经常有人问我,作为刚毕业的要去面试,关于安卓开发的问题,技术面试官会经常问哪些问题呢?我想来想去不能一股脑的全写出来,我准备把这些问题单独拿出来写,并详细的分析一下,这样对于初学者是最有帮助的.这次的 ...

  8. iOS常见面试题汇总

    iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...

  9. JDBC常见面试题

    以下我是归纳的JDBC知识点图: 图上的知识点都可以在我其他的文章内找到相应内容. JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步骤 ? 注册数据库驱动. 建立数据库连接. ...

随机推荐

  1. ES6 之 Integer数据类型

    1.简介(仅仅是提案) js所有数字都保存成64为浮点数,这就决定了整数的精确程度只能到53个二进制位. 大于这个范围的整数,js是无法精确表示的,这使得js不合适进行科学和金融方面的精确计算. 故引 ...

  2. [转]分析zookeeper能做什么

    Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zo ...

  3. 计算广告-GD广告

    算法 分配算法主要是解优化问题. 流量预测(traffic forecasting), 流量预估 库存分配, 粗力度的分配. 流量分配, 排单算法 在线分配(Online Allocation) 资料 ...

  4. IP首部检验和的计算和举例

    IP首部校验和 首部校验和(16位)字段只检验数据报的首部,不检验数据部分.这里不采用CRC检验码而采用简单的计算方法. 发送端 首先将检验和置零,求首部数据的补码和(包含检验和),因为为零,所以无影 ...

  5. h5-sessionStorage储存的使用

    <!-- sessionStorage的使用:存储数据到本地.存储的容量5mb左右 1.这个数据本质是储存在当前页面的内存中 2.他的生命周期为关闭当前页面,关闭页面,数据会自动清楚 setTt ...

  6. java 面向对象概述, 函数解析

    函数:class FunctionDemo { public static void main(String[] args) { /* int x = 4; System.out.println(x* ...

  7. np.newaxis 为 numpy.ndarray(多维数组)增加一个轴

    >> type(np.newaxis) NoneType np.newaxis 在使用和功能上等价于 None,其实就是 None 的一个别名. 1. np.newaxis 的实用 > ...

  8. Heavy Light Decomposition

    Note 1.DFS1 mark all the depth mark fathers mark the heavy/light children mark the size of each subt ...

  9. Java之同步代码块处理实现Runnable的线程安全问题

    /** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票.错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某 ...

  10. HTML引入文件/虚拟目录/绝对路径与相对路径

    此篇引见 相对路径和绝对路径的区别 1.绝对路径 使用方法:而绝对路径可以使用“\”或“/”字符作为目录的分隔字符 绝对路径是指文件在硬盘上真正存在的路径.例如 <body backround= ...