springboot面试题
所属分类 springboot
浏览量 1186
与 Spring 的区别
约定大于配置 Javaconfig Starter 自动配置 Actuator 内嵌容器
优点 编码 配置 监控 部署 变得简单
springboot缺点
集成度封装度高,出了问题,难排查
Actuator的作用
监控和管理应用 健康检查、审计、统计和HTTP追踪等
JMX HTTP endpoints
与外部应用监控系统整合 比如 Prometheus, Graphite , DataDog, Influx, Wavefront 等
Actuator使用Micrometer 整合外部应用监控系统
spring-boot-starter-actuator
常用的内置端点
auditevents 审计事件信息
env 环境属性
health 显示应用程序运行状况信息
httptrace 显示HTTP跟踪信息
info 显示应用程序信息
metrics 显示指标信息
mappings: 显示所有@RequestMapping路径的列表
scheduledtasks: 显示应用程序中的计划任务
threaddump: 执行线程转储
beans :所有加载的spring bean
单元测试 @SpringBootTest
springboot2单元测试
支持哪些外部配置
properties文件 YAML文件 环境变量 系统属性和命令行选项参数
@Value 注入
@ConfigurationProperties 绑定参数
Environment 直接获取
String getProperty(String key);
命令行选项参数
-server.port = 8080
application.properties
在当前目录,类路径根目录或其config子目录中搜索该文件
application-{profile}.properties
一般情况先加载yml,再加载properties文件,后加载的优先级高,会覆盖前面的配置
外部配置加载顺序
java -jar xxx.jar --server.port=8088 --spring.config.location=/home/xxx/application.properties
命令行参数
jar包外部配置优先
profile 优先
./config/
./
classpath:/config/
classpath:/
自动配置原理
springboot自动配置原理和实例
如何根据不同的条件来加载bean
@Conditional系列注解
@ConditionalOnMissingBean
value 要检查的bean类型
name 要检查的bean名称
@ConditionalOnMissingBean
public XxxBean xxxBean(){...}
不存在XxxBean类型的bean则初始化该bean
如何禁用特定的自动配置
@EnableAutoConfiguration 的 exclude 属性
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, XxxAutoConfiguration.class})
或者
application.properties
spring.autoconfigure.exclude
核心注解
@Configuration
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication 包含了以上 3 个注解
starter
依赖管理 ,以一致的方式传递和管理依赖
官方starter spring-boot-starter-xxx
非官方starter xxx-spring-boot-starter 譬如 mybatis-spring-boot-starter
最常用的starter
spring-boot-starter 核心,包括自动配置支持,日志和YAML
spring-boot-starter-aop Spring AOP和AspectJ
spring-boot-starter-data-jpa Spring Data JPA和Hibernate
spring-boot-starter-jdbc JDBC与HikariCP连接池
spring-boot-starter-security Spring Security
spring-boot-starter-tes
spring-boot-starter-web Spring MVC构建Web应用,包括RESTful应用
Maven配置springboot ,开启 springboot 特性
1)继承 spring-boot-starter-parent 项目
2)导入 spring-boot-dependencies 项目依赖
在 pom.xml 中配置 parent
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
import 方式
org.springframework.boot
spring-boot-dependencies
2.0.0.RELEASE
pom
import
ApplicationContextInitializer ApplicationRunner CommandLineRunner
springboot ApplicationContextInitializer 使用
运行 SpringBoot应用的几种方式
放到容器中运行
直接执行 main 方法运行
Maven插件运行
Maven命令行直接运行SpringBoot项目
日志框架
默认日志框架 Logback
热部署几种方式
Spring Loaded
Spring-boot-devtools
Jrebel
模版热部署
如何定义多套环境
applcation.properties
application-dev.properties
application-test.properties
application-prod.properties
spring.profiles.active=a,b,c
--spring.profiles.active=dev
spring-boot:run -Drun.profiles=dev
java -jar xxx.jar --spring.profiles.active=dev
如何兼容老的spring项目
@ImportResource 导入 xml 配置文件
@ImportResource("classpath:beans.xml")
@ImportResource(locations = {"classpath:spring.xml"})
如何修改端口号
配置文件
server.port=8888
java -jar xxx.jar ——server.port=8888
java -Dserver.port=8888 -jar xxx.jar
异常处理相关注解
@ControllerAdvice
@ExceptionHandler
配置读取相关注解
@PropertySource
@Value
@Environment
@ConfigurationProperties
上一篇
下一篇
MongoDB优缺点
延迟任务处理总结
springboot最核心的三个注解
springboot自动配置原理和实例
ConcurrentHashMap使用注意点
SpringCloud VS Dubbo