1.什么是spring boot?
Spring Boot 是Spring开源组织下的子项目,是spring组件一站式的解决方案;它主要是简化了spring框架的使用难度,简化了繁重的配置,提供了各种各样的启动器,使得开发者能快速上手。spring boot是spring发展到一定程度的产物,spring boot并不是spring的替代品,spring boot是为了程序猿们能更好的使用spring。spring boot的核心理念:约定大于配置。
2.spring boot的优点以及缺点?
优点:项目搭建的时间快;
简化了spring的配置文件;
无代码生成和XML配置;
spring boot项目能够独立运行,通过java -jar app.jar命令启动;
提供 starter 启动器,简化 Maven 配置,避免大量的 Maven jar包导入和各种版本冲突;
内嵌了tomcat、jetty等Servlet 容器,简化了tomcat、jetty等容器的繁琐配置;
简化监控,使用Spring Boot Actuator组件提供了应用的系统监控,可以查看应用配置的详细信息;
缺点:版本迭代速度快,一些模块的变动很大;
由于简化了spring配置,报错时定位困难;
网上现成的解决方案比较少;
3.spring boot的核心功能有哪些?
(1) 独立运行的 Spring 项目
spring boot可以以jar的方式独立运行,通过java -jar app.jar命令,就能运行一个spring boot项目;
(2)内嵌了servlet容器
spring boot可以选择性的内嵌tomcat、jetty等容器,不需要将项目打成war包部署;
(3)提供 starter 启动器简化 Maven 配置
spring boot 提供了一系列的 starter 启动器来简化 Maven 的依赖加载;
(4)自动配置 Spring
Spring Boot 会根据在类路径中的 jar 包、类,为 jar 包里的类自动配置 Bean,这样会极大地减少我们要使用的配置;
(5)准生产的应用监控
spring boot 提供了Actuator组件对运行时的项目进行监控;
(6)无代码生成和 xml 配置
spring 4.x 提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置;
4.创建一个spring boot project最简单的方法是什么?
Spring Initializer是启动一个spring boot project的很好工具,登录Spring Initializer的web页面按照步骤就能很快创建一个spring
boot工程;当然也可以在eclipse开发工具中直接创建项目;
5.spring boot核心的配置文件有哪几个?它们的区别是什么?
spring boot的核心配置文件是 application 和 bootstrap 配置文件;application配置文件主要用于spring boot项目的自动化配置;而bootstrap配置文件的使用场景主要有下面几种:
(1)使用spring cloud config配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
(2)一些固定的不能被覆盖的属性;
(3)一些加密/解密的场景;
6.spring boot 配置文件有哪几种格式?它们的区别是什么?
配置文件有 .properties 和 .yml 两种格式,它们的主要区别是书写格式不一样。另外,.yml 格式不支持 @PropertySource 注解导入配置;
.properties格式:
server.port = 8080
.yml格式:
server:
# 服务http端口
port: 9500
7.spring boot 的核心注解是哪个?是由哪几个注解组成的?
spring boot启动类上的注解是@SpringBootApplication,它也是spring boot 的核心注解;主要包含了以下三个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能;
@ComponentScan:Spring组件扫描;
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项;
8.spring boot 如何禁用特定的配置类?
若发现任何不愿使用的特定自动配置类,可以使用@EnableAutoConfiguration的排除属性。列如:
关闭数据源自动配置功能:@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class});
9.开启spring boot 特性有哪几种方式?
(1)继承spring-boot-starter-paparent项目:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
(2)导入spring-boot-dependencies项目依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
10.spring boot 是否需要独立的容器运行?
不需要,因为内嵌了tomcat/jetty容器,可以直接将项目打成jar运行;
11.启动spring boot项目有几种方式?
(1)直接在eclipse中运行Application这个类的main方法;
(2)在spring boot项目的根目录下运行mvn spring-boot:run;
(3)使用mvn install 生成jar后,执行 java -jar app.jar命令运行;
12.spring boot自动配置的原理是什么?
注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置;
13.spring boot 2.x有什么新的特性?与1.x有什么区别?
配置发生了变更;
升级了JDK的版本;
升级了第三方类库;
支持响应式spring编程;
支持HTTP/2;
配置属性绑定;
更多的改进和加强;
14.如何使用spring boot实现分页和排序?
使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页的数据传递给存储库方法;
15.spring boot如何集成activemq?
对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq 依赖关系。 它只需要很少的配置,并且不需要样板代码;
16.如何使用spring boot实现异常处理?
spring提供了一种使用controlleradvice处理异常非常有用的方法,我们通过实现一个ControlerAdvice 类,来处理控制器类抛出的所有异常;
17.spring boot 如何定义多套不同的配置环境?
可以提供多套配置文件,比如:
applcation.properties
application-dev.properties
application-test.properties
application-prod.properties
通过applcation.properties文件中的spring. profiles.active = dev 来加载不同的环境的文件;
18.spring boot 可以兼容老的spring项目吗?怎么实现?
可以兼容,使用@ImportResource注解导入老spring项目的配置文件;
19.保护spring boot应用有哪些方法?
在生产环境使用HTTPS协议;
升级依赖到最新的版本;
启用CSRF保护;
使用内容安全策略防止XSS攻击;
使用Snyk检查你的依赖关系;
20.如何实现spring boot应用程序的安全性?
为了实现spring boot应用的安全性,我们使用 spring-boot-starter-security依赖项,并且必须添加安全配置;