文章目录
- SpringBoot3介绍
- 一、快速入门
- 二、入门总结
- 1. 为什么依赖不需要写版本?
- 2. 启动器(Starter)是什么
- 3. @SpringBootApplication注解包括的效果?
- 三、SpringBoot3配置文件
- 3.1 统一配置管理概述
- 3.2 属性配置文件使用
- 3.3 YAML配置文件使用
- 3.4 批量配置文件注入
- 3.5 多环境配置和使用
- 总结
SpringBoot3介绍
SpringBoot3 官方文档
SpringBoot底层是Spring。
约定大于配置,基本不需要主动编写配置类、也不需要 XML 配置文件。
总结:
简化开发,简化配置,简化整合,简化部署,简化监控,简化运维。
技术&工具 | 版本(or later) |
---|---|
maven | 3.6.3 or later 3.6.3 或更高版本 |
Tomcat | 10.0+ |
Servlet | 9.0+ |
JDK | 17+ |
一、快速入门
- 创建Maven工程
- 添加依赖(springboot父工程依赖 , web启动器依赖)
- 编写启动引导类(springboot项目运行的入口)
- 编写处理器Controller
- 启动项目
创建空项目:springboot-part
创建模块 : springboot-base-quick-01
模块下的pom.xml :
- 添加父工程坐标
- 添加
spring-boot-starter-parent
用于方便的管理项目依赖。 - 里面已经对各种常用依赖的版本进行了管理
- 项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了
- 需要什么依赖,直接引入坐标(不需要添加版本)即可
- 添加web启动器
- 为了让Spring Boot帮我们完成各种自动配置,我们必须引入Spring Boot提供的自动配置依赖,我们称为启动器。
- 因为我们是web项目,这里我们引入web启动器
spring-boot-starter-web
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<!--所有springboot项目都必须继承自 spring-boot-starter-parent-->
<!-- 设置为 spring-boot 父 parent -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
<groupId>com.wake</groupId>
<artifactId>springboot-base-quick-01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- 导入对应的启动器
这是一个整合包
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
- 启动类:
@SpringBootApplication //启动类
public class Main {
public static void main(String[] args) {
//自动创建IOC容器,启动tomcat服务器
SpringApplication.run(Main.class,args);
}
}
- controller 测试:
- IoC和DI注解需要在启动类的同包或者子包下方可生效!
- 无需指定,约束俗称。
@RestController
@RequestMapping("hello")
public class HelloController {
@GetMapping("boot")
public String hello(){
return "hello springboot!!!";
}
}
-
目录
-
直接启动:
-
显示:
二、入门总结
1. 为什么依赖不需要写版本?
- 每个boot项目都有一个父项目
spring-boot-starter-parent
- parent的父项目是
spring-boot-dependencies
- 父项目,把所有常见的jar的依赖版本都声明好了。
2. 启动器(Starter)是什么
- Spring Boot提供了一种叫做
Starter
的概念,它是一组预定义的依赖项集合,旨在简化Spring应用程序的配置和构建过程。Starter
包含了一组相关的依赖项,以便在启动应用程序时自动引入所需的库、配置和功能。
主要作用如下:
Spring Boot提供了许多预定义的Starter,例如 :
- spring-boot-starter-web用于构建Web应用程序,
- spring-boot-starter-data-jpa用于使用JPA进行数据库访问,
- spring-boot-starter-security用于安全认证和授权等等。
spring boot提供的全部启动器地址:Starter - springboot启动器 官方文档
3. @SpringBootApplication注解包括的效果?
一个组合注解,里面包含一系列的子注解。
- @EnableAutoConfiguration注解
- 用于启用Spring Boot的自动配置机制
- @ComponentScan注解
- 自动扫描并且加载组件
- …
三、SpringBoot3配置文件
想要设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.properties
或application.yml
)中
3.1 统一配置管理概述
配置文件应该放置在Spring Boot工程的src/main/resources
目录下。这是因为src/main/resources
目录是Spring Boot默认的类路径(classpath),配置文件会被自动加载并可供应用程序访问。
功能配置参数说明:springboot配置参数 - 官方文档
细节总结:
- 集中式管理配置。统一在一个文件完成程序功能参数设置和自定义参数声明 。
- 位置:
resources
文件夹下,必须命名application 后缀 .properties / .yaml / .yml
。 - 如果同时存在
application.properties | application.yml(.yaml)
,properties
的优先级更高。 - 配置基本都有默认值。
3.2 属性配置文件使用
- application.properties
# 使用springboot提供的配置,修改程序的参数 key是固定的
server.port=80
server.servlet.context-path=/doug
# 自定义配置
doug.name=道格维克
doug.nickname=KNELL
- 测试
@RestController
@RequestMapping("hello")
public class HelloController {
@Value("${doug.nickname}")
private String name;
@GetMapping("boot")
public String hello(){
System.out.println(name);
return "hello springboot!!!";
}
}
3.3 YAML配置文件使用
YAML(YAML Ain’t Markup Language)是一种基于层次结构的数据序列化格式
yaml语法说明:
- 数据结构用树形结构呈现,通过缩进来表示层级,
- 连续的项目(集合)通过减号 ” - ” 来表示
- 键值结构里面的key/value对用冒号 ” : ” 来分隔。
- YAML配置文件的扩展名是yaml 或 yml
# yaml | yml 有层次,可以继承配置文件格式
server:
port: 80
servlet:
context-path: /doug
# 自定义 注意 key:空格 值
# key:后面加一个空格再写值
doug:
info:
name: dougwake
age: 22
root:
username: root
pwd: root123
# 集合的格式 -
gfs:
- 艾琳·艾德勒
- 萨曼莎·格罗夫斯
- 杰罗姆·尤金
读取方式和properties一致
3.4 批量配置文件注入
- yml
doug:
info:
name: dougwake
age: 22
user:
username: root
pwd: root123
# 集合的格式 -
gfs:
- a
- b
- b
- 实体类
/**
* @Description:
* 1. 读取配置方式一 : @Value
* 直接在属性上赋值
* 只能读取单个值,集合就不能读取,会报错
* 2. 批量配置读取 :
* @ConfigurationProperties(prefix = "doug.user") 通用的前缀
* 不用一个一个属性赋值,集合也能赋值了
*/
@Data
@Component
@ConfigurationProperties(prefix = "doug.user")
public class User {
private String username;
private String pwd;
private List<String> gfs;
}
- controller
@RestController
@RequestMapping("hello")
public class HelloController {
@Autowired
private User user;
@GetMapping("show")
public User show(){
return user;
}
}
- 测试
3.5 多环境配置和使用
- application.yml
# 自定义 注意 key:空格 值
# key:后面加一个空格再写值
doug:
info:
name: dougwake
age: 22
user:
username: root
pwd: root123
# 集合的格式 -
gfs:
- a
- b
- b
spring:
profiles:
active: test,dev # 激活外部的配置 application-test | application-dev
# 外部配置的key和当前key 重复时 外部的会覆盖当前内部的
# jar --active=test
总结
springboot-part - GitHub
- spring-boot-starter-web 依赖里面包括:
- 多个yml文件 配置
- parent源码 允许文件