SpringBoot(1) 核心特性
2023-10-30 15:01:22
# Backend
# SpringBoot
本文使用的 SpringBoot 版本为 3.0.5, 最小需要 jdk17
快速入门
创建项目
1 |
|
打包
1 |
|
使用 mvn package
打包后,通过 java -jar
即可运行
简化配置
通过书写配置文件 application.properties/yml
完成配置
依赖管理机制
- 导入场景启动器的依赖时不需要声明版本号
- 原因:每个boot项目都有一个父项目
spring-boot-starter-parent
spring-boot-starter-parent
的父项目是spring-boot-dependencies
(版本仲裁中心)
- 版本仲裁中心声明了所有常见的jar的依赖版本
- 原因:每个boot项目都有一个父项目
自定义版本号:利用maven的就近原则
直接在当前项目
properties
标签中声明父项目用的版本属性的key- 例如:
<mysql.version>5.1.47</mysql.version>
- 例如:
直接在导入依赖的时候声明版本
第三方的jar包自行声明版本
自动配置机制
默认的包扫描规则
- SpringBoot只会扫描主程序所在的包及其下面的子包,自动的component-scan功能
自定义扫描路径
@SpringBootApplication(scanBasePackages = "com.atguigu")
@ComponentScan("com.atguigu")
直接指定扫描的路径
配置默认值
- 配置文件的所有配置项是和某个类的对象值进行一一绑定的。
- 绑定了配置文件中每一项值的类:属性配置类。
比如:
ServerProperties
绑定了所有Tomcat服务器有关的配置MultipartProperties
绑定了所有文件上传相关的配置- 官方文档
按需加载自动配置
- 场景启动器除了会导入相关功能依赖,导入一个
spring-boot-starter
,是所有starter
的starter
spring-boot-starter
导入了一个包spring-boot-autoconfigure
。包中囊括了所有场景的AutoConfiguration
自动配置类虽然全场景的自动配置都在
spring-boot-autoconfigure
这个包,但并不是全都开启的- 导入哪个场景就开启哪个自动配置
- 场景启动器除了会导入相关功能依赖,导入一个
组件注册
@Configuration
,@SpringBootConfiguration
: 配置类, 使用上无区别@Bean
,@Scope
: 用于注册 bean 以及声明该 bean 的作用域, 通过修改函数名或者@Bean
的值可设置 bean 的名称(组件名默认是函数名)@Import
: 对第三方包中的组件进行注册时,除了可以在函数上使用@Bean
, 也可以在配置类上使用@Import(xxx.class)
(组件名默认为全类名)