SpringBoot基本了解
什么是SpringBoot?
SpringBoot是Spring开源组织下的子项目,是Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。SpringBoot 的最大的优势是“约定优于配置“
SpringBoot约定优于配置的体现
一、Maven的目录结构:
1.默认有resources文件夹存放配置文件
2.默认打包方式为jar
二、SpringBoot 默认支持 properties(.properties) 和 YAML(.yml .yaml ) 两种格式的配置文件
如果在项目中遇到application.properties出现中文乱码的问题,可以改用YAML,
出现原因是因为Spring Boot总是会以iso-8859的编码方式读取该文件。
而且YAML拥有更简洁的语法,因此更推荐使用application.yml作为默认的配置文件。
三、默认通过 spring.profiles.active 属性来根据运行环境自动读取不同的、额外的配置文件
ex:将该属性定义为dev,SpringBoot就会额外从application-dev.properties/application-dev.yml文件中读取该环境的配置
四、EnableAutoConfiguration 默认对于依赖的 starter 进行自动装载。
五、spring-boot-start-web 中默认包含 spring-mvc 相关依赖以及内置的 tomcat 容器,使得构建一个 web 应用更加简单。
为什么要用SpringBoot?
SpringBoot 优点非常多,如:
独立运行 创建独立的Spring应用程序
内置Tomcat等容器,无需部署WAR文件
简化maven配置
自动配置Spring
无代码生成并且对XML也没有配置要求
提供一系列非功能特性,如安全、指标,应用监控,健康检测。
SpringBoot 缺点?
没有提供相应的服务发现和注册的配套功能,自身的acturator所提供的监控功能,也需要与现有的监控对接
SpringBoot 的核心配置文件有哪几个?它们的区别是什么?
SpringBoot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件主要用于 Spring Boot 项目的自动化配置。
bootstrap 配置文件有以下几个应用场景。
使用SpringCloudConfig 配置中心时,要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
一些固定的不能被覆盖的属性;一些加密/解密的场景;
SpringBoot 的配置文件有哪几种格式?它们有什么区别?
.properties 和 .yml,它们的区别主要是书写格式不同。
1.properties: app.user.name-=jack
2..yml
server:
port: 8889
另外,.yml 格式不支持 @PropertySource
注解导入配置。
开启 SpringBoot 特性有哪两种方式?
1.继承spring-boot-starter-parent项目
2.导入spring-boot-dependencies项目依赖
SpringBoot 需要独立的容器运行吗?
可以不需要,内置了 Tomcat/ Jetty/Undertow三种web容器。
运行 SpringBoot 有哪几种方式?
1.打包用命令或者放到容器中运行
2.用 Maven/ Gradle 插件运行
3.直接执行 main 方法运行
你如何理解SpringBoot 中的Starters?
Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如果你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖
如何在 SpringBoot 启动的时候运行一些特定的代码?
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法
SpringBoot 有哪几种读取配置的方式?
SpringBoot 可以通过 ,@Value ,@PropertySource,@Environment, @ConfigurationProperties 来绑定变量
注意:yml 格式不支持 @PropertySource
注解导入配置。
SpringBoot 支持哪些日志框架?推荐和默认的日志框架是哪个?
SpringBoot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starters 启动器,Spring Boot 将使用 Logback 作为默认日志框架。
SpringBoot 实现热部署有哪几种方式?
主要有两种方式:Spring Loaded Spring-boot-devtools
你如何理解SpringBoot 配置加载顺序?
1.properties文件;
2.YAML文件;
3.系统环境变量;
4.命令行参数;
等等……
SpringBoot如何定义多套不同环境配置?
提供多个配置文件:
application.properties(spring.profiles.active=dev)
application-dev.properties
application-test.properties
application-prod.properties
SpringBoot可以兼容老 Spring 项目吗,如何做?
可以兼容,使用 @ImportResource
注解导入老 Spring 项目配置文件。