什么是 Spring Boot
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。
为什么要用 SpringBoot
快速开发,快速整合,配置简化、内嵌服务容器
SpringBoot 与 SpringCloud 区别
SpringBoot 是快速开发的 Spring 框架,SpringCloud 是完整的微服务框架,SpringCloud依赖于 SpringBoot。
Spring Boot 有哪些优点?
Spring Boot 主要有如下优点:
1. 容易上手,提升开发效率,为 Spring 开发提供一个更快、更简单的开发框架。
2. 开箱即用,远离繁琐的配置。
3. 提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
4. SpringBoot 总结就是使编码变简单、配置变简单、部署变简单、监控变简单等等
Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如:java 如关闭数据源自动配置功能:@SpringBootApplication(exclude =
{ DataSourceAutoConfiguration.class })。
@ComponentScan:Spring 组件扫描。
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中。
SpringBoot Starter 的工作原理
我个人理解 SpringBoot 就是由各种 Starter 组合起来的,我们自己也可以开发 Starter
在 sprinBoot 启动时由@SpringBootApplication 注解会自动去 maven 中读取每个starter中的spring.factories文件,该文件里配置了所有需要被创建 spring 容器中的 bean,并且进行自动配置把 bean 注入SpringContext 中 //(SpringContext 是 Spring 的配置文件)
Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?
配置变更
JDK 版本升级
第三方类库升级
响应式 Spring 编程支持
HTTP/2 支持
配置属性绑定
更多改进与加强
SpringBoot 支持什么前端模板
thymeleaf,freemarker,jsp,官方不推荐 JSP 会有限制
SpringBoot 的缺点
我觉得是为难人,SpringBoot 在目前我觉得没有什么缺点,非要找一个出来我觉得就是
由于不用自己做的配置,报错时很难定位。
运行 Spring Boot 有哪几种方式
1. 打包用命令或者放到容器中运行
2. 用 Maven/ Gradle 插件运行
3. 直接执行 main 方法运行
Spring Boot 需要独立的容器运行吗?
可以不需要,内置了 Tomcat/ Jetty 等容器。
开启 Spring Boot 特性有哪几种方式?
1. 继承 spring-boot-starter-parent 项目
2. 导入 spring-boot-dependencies 项目依赖
SpringBoot 实现热部署有哪几种方式?
热部署就是可以不用重新运行 SpringBoot 项目可以实现操作后台代码自动更新到以运行的项目中
主要有两种方式:
Spring Loaded
Spring-boot-devtools
SpringBoot 事物的使用
SpringBoot 的事物很简单,首先使用注解 EnableTransactionManagement 开启事物之后,然后在 Service 方法上添加注解 Transactional 便可。
Async 异步调用方法
在 SpringBoot 中使用异步调用是很简单的,只需要在方法上使用@Async 注解即可实现方法的异步调用。 注意:需要在启动类加入@EnableAsync 使异步调用@Async 注解生效。
如何在 Spring Boot 启动的时候运行一些特定的代码?
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法