什么是Springboot?
他是spring开源组织下的子项目,是spring组件的一站式解决方案,主要是简化了使用spring额难度,减省了繁重的配置,提供了各种启动器,方便快速上手
为什么使用springboot?
- 能够独立运行在内嵌的服务器中
- 简化配置,上手容易
- 自动配置
- 无代码生成和xml配置
- 应用监控
- 开箱即用
- 约定大于配置
核心配置文件有哪些,区别在哪里?
核心配置文件是application和bootstrap
前者主要用于springboot项目的自动化配置
后者主要有以下的应用场景
- 使用springcloudconfig配置中心时,需要在这里面添加连接到配置中西你的配置属性来加载外部配置中心的配置信息
- 一些固定的不能被覆盖的属性
- 一些加密/解密的场景
配置文件有哪些格式,区别在哪里
properties和yaml,主要区别在书写格式不同,另外yaml不支持@PropertySource注解导入配置
yaml更加结构化,而且更少混淆,具有分层配置数据的构成
核心注解是什么,主要由哪些注解组成
启动类中的@SpringBootApplication,里面包含了
@SpringBootConfigration 实现配置文件的功能
和@EnableAutoConfiguration 打开自动配置的功能
还有@ComponentScan spring组件扫描
springboot中的starters是什么?
starters可以理解为启动器,包含了一系列可以集成到应用里面的依赖包,可以一站式继承spring及其他技术,而不需要到处找示例代码和依赖包。
starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一些列得到支持的管理传递性依赖
springboot 有几种读取配置的方法?
可以通过@PropertySourrce @Value @Environment @ConfigurationProperties 注解来绑定变量
支持哪些日志框架,推荐和默认的日志框架是哪个
支持javaUtilLogging,Log4j2,Lockback作为日志框架;推荐最后一个
实现热部署的方式?
主要由SpringLoaded 和Spring-boot-devtools两种
springboot配置加载顺序是如何?
- properties文件
- yaml文件
- 系统环境变量
- 命令行参数
如何定义多套不同的properties配置
application.properties
application-dev.properties
application-con.properties
springboot2.x有什么新特性,与1.x的区别是
- 配置变更
- jdk版本升级
- 第三方类库升级
- 响应式spring编程支持
- http/2支持
- 配置属性绑定
保护springboot应用的方法
- 在生产中使用https
- 使用Snyk检查依赖关系
- 升级到最新版本
- 启动CSRF保护
- 使用内容安全策略防止XSS攻击
什么是自动配置
spring查看(classpath上可用的框架)已存在的应用程序的配置,在这个基础上springboot提供了配置应用程序和框架所需要的基本的配置,这就是自动配置
springboot自动配置的原理
在main方法中添加@SpringBootApplication或者@EnableAutoConfiguration会自动去maven中读取starter中的spring.factories文件,该文件中配置了所有需要被创建额spring容器的bean
requestMapping和GetMapping的区别在哪
前者具有雷属性,可以进行getpost等请求方式
后者是get请求方法中的一个特例,知识前者的一个延伸,目的是为了提高代码清晰度
jpa和hibernate的区别
jpa是一个规范或者接口
hibernate是jpa的一个实现
业务边界应该从哪一层开始
建议在服务层管理业务。商业业务逻辑在商业层或者服务层,要执行的业务改哪里也在这层