1. Spring Boot概念
Spring的一键式解决方案,能够简化搭建Spring项目的过程,省去了繁杂的配置过程,对开发者更友好。
2. Spring Boot有哪些优点
(1) 能够独立运行:内置了servlet容器
(2) 配置简单:搭建项目不再需要繁琐的配置
(3) 自动配置:根据当前类路径下的类和jar包自动配置bean
(4) 无代码生成和XML配置:在配置过程中没有代码生成,也不需要XML文件,完全通过注解实现
(5) 应用监控:提供监控服务,便于做健康检测
3. Spring Boot有哪些核心配置文件
有两种配置文件:
(1) bootstrap(.yml或者.properties):bootstrap是应用程序的父上下文,拥有更高的加载优先级,主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
(2) application(.yml或者.properties):主要用于Sprint Boot项目的自动化配置。
4. Spring Boot 的配置文件有哪几种格式
.properties和.yml两种格式,主要的区别在于书写方式不同
(1) .properties
app.user.name = javastack
(2) .yml
app:
user:
name: javastack
除了书写格式之外,还有一个区别在于.yml格式不支持 @PropertySource
注解导入配置。
5. Spring Boot 的核心注解是哪个,它主要由哪些注解组成
Spring Boot 的核心注解是启动类上面的注解是@SpringBootApplication,主要组合包含了3个注解:
(1) @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
(2) @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
(3) @ComponentScan:Spring组件扫描。
6. Spring Boot 是否需要独立的容器运行
Spring Boot内置了 Tomcat/Jetty 等容器,没有额外的容器也能够运行。
7. 运行 Spring Boot 有哪几种方式
(1) 打包用命令或者放到容器中运行
(2) 用 Maven/Gradle 插件运行
(3) 直接执行 main 方法运行
8. 开启Spring Boot特性有哪几种方式
(1) 继承spring-boot-starter-parent项目
(2) 导入spring-boot-dependencies项目依赖
9. 简单介绍一下Spring Boot 中的 Starters
Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如果要使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。
10. 如何在 Spring Boot 启动的时候运行一些特定的代码
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。
11. Spring Boot 支持哪些日志框架
Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架,Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。
此外,spring-boot-starter启动器包含spring-boot-starter-logging启动器并集成了slf4j日志抽象及Logback日志框架。
12. Spring Boot 实现热部署有哪几种方式
主要有两种方式:(1)Spring Loaded (2) Spring-boot-devtools
13. 介绍一下Spring Boot 配置加载顺序
在 Spring Boot 里面,可以使用以下几种方式来加载配置。
(1) properties文件;
(2) YAML文件;
(3) 系统环境变量;
(4) 命令行参数;
配置属性加载的顺序如下:
(1)开发者工具 Devtools 全局配置参数;
(2)单元测试上的 @TestPropertySource 注解指定的参数;
(3)单元测试上的 @SpringBootTest 注解指定的参数;
(4)命令行指定的参数,如 java -jar springboot.jar --name="Java技术栈";
(5)命令行中的 SPRING_APPLICATION_JSON 指定参数, 如 java -Dspring.application.json='{"name":"Java技术栈"}' -jar springboot.jar
(6)ServletConfig 初始化参数;
(7)ServletContext 初始化参数;
(8)JNDI参数(如 java:comp/env/spring.application.json);
(9)Java系统参数(来源:System.getProperties());
(10)操作系统环境变量参数;
(11)RandomValuePropertySource 随机数,仅匹配:ramdom.*;
(12)JAR包外面的配置文件参数(application-{profile}.properties(YAML))
(13)JAR包里面的配置文件参数(application-{profile}.properties(YAML))
(14)JAR包外面的配置文件参数(application.properties(YAML))
(15)JAR包里面的配置文件参数(application.properties(YAML))
(16)@Configuration配置文件上 @PropertySource 注解加载的参数;
(17)默认参数(通过 SpringApplication.setDefaultProperties 指定);
14. Spring Boot 如何定义多套不同环境配置
提供多套配置文件,如:
application-dev.properties
application-test.properties
application-prod.properties
15. Spring Boot 如何兼容老 Spring 项目
使用 @ImportResource 注解导入老 Spring 项目配置文件。
16. 有哪些方法可以保护 Spring Boot 应用
(1)在生产中使用HTTPS
(2)使用Snyk检查你的依赖关系
(3)升级到最新版本
(4)启用CSRF保护
(5)使用内容安全策略防止XSS攻击
17. Spring Boot 2.X 与1.X相比有什么新特性
(1)配置变更
(2)JDK 版本升级
(3)第三方类库升级
(4)响应式 Spring 编程支持
(5)HTTP/2 支持
(6)配置属性绑定