springboot面试题(以自己的话总结)

1.什么是springboot
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

2.springboot功能
1.自动配置:springboot的自动配置是一个运行时(更准确的说是应用程序启动时)的过程,springboot自动完成Spring配置应该用哪个,不该用哪个。
2.起步依赖:定义了对其他库的依赖传递,不会存在版本冲突问题
3.辅助功能:提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。

3.springboot的核心注解是哪个?它主要由哪几个注解组成的?
启动类上的注解@SpringBootApplication,是核心注解,主要包含了以下3个注解:
@SpringBootConfiguration:包含了@Configuration,实现配置文件的功能;
@EnableAutoConfiguration:打开自动配置的功能;
@ComponentScan:Spring组件扫描

4.SpringBoot需要独立的容器运行吗?
可以不需要,内置了Tomcat/Jetty等容器,默认Tomcat

5.运行SpringBoot有哪几种方式?
1.打包用命令或放到容器中运行
2.直接执行main方法运行
3.用Maven插件运行

6.Spring Boot 自动配置原理是什么?
在springboot的启动类中使用了注解@SpringBootApplication注解,里面的@EnableAutoConfiguration注解是自动配置的核心,注解内部使用@Import(AutoConfigurationImportSelector.class)(class文件用来哪些加载配置类)注解来加载配置类,并不是所有的bean都会被加载,在配置类或bean中使用@Condition来加载满足条件的bean。
@EnableAutoConfiguration 给容器导入META-INF/spring.factories 里定义的自动配置类,筛选有效的自动配置类。每一个自动配置类结合对应的 xxxProperties.java 读取配置文件进行自动配置功能

7.SpringBoot自动配置-Condition
Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载相应的Bean
@Conditional要配和Condition的实现类(ClassCondition)进行使用
SpringBoot 提供的常用条件注解:
ConditionalOnProperty:判断配置文件中是否有对应属性和值才初始化Bean
ConditionalOnClass:判断环境中是否有对应字节码文件才初始化Bean
ConditionalOnMissingBean:判断环境中没有对应Bean才初始化Bean

8.Spring Boot 可以兼容老 Spring 项目吗,如何做?
可以,使用@ImportResource注解导入老Spring项目配置文件。在启动类上使用。

9.SpringBoot配置-profile
1.profile是用来完成不同环境下,配置动态切换功能的
2.profile配置方式
多profile文件方式:提供多个配置文件,每个代表一种环境。
application-dev.properties/yml 开发环境
​application-test.properties/yml 测试环境
​application-pro.properties/yml 生产环境
3.profile激活方式
配置文件:spring.profiles.active=dev

10.springboot监控 actuator
spring boot actuator 是 spring启动框架中的重要功能之一。spring boot自带监控功能,可以帮助实现对程序内部运行情况监控,比如监控状态、Bean加载情况、配置属性、日志