文章目录
- 前言
- 一. SpringBoot3介绍
- 1.1 SpringBoot项目创建
- 1. 创建Maven工程
- 2. 添加依赖(springboot父工程依赖 , web启动器依赖)
- 3. 编写启动引导类(springboot项目运行的入口)
- 4. 编写处理器Controller
- 5. 启动项目
- 1.2 项目理解
- 1. 依赖不需要写版本原因
- 2. 启动器(Starter)
- 3. @SpringBootApplication注解
- 二. SpringBoot配置文件
- 2.1 统一配置管理
- 2.2 properties配置文件使用
- 2.3 yaml配置文件使用
- 2.4 批量配置文件注入
- 2.5 多环境配置和使用
前言
使用XML、注解、Java配置类、以及他们的混合用法,让人觉得配置文件过于复杂和繁琐!
SpringBoot 帮助简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring),大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术
一. SpringBoot3介绍
1.1 SpringBoot项目创建
1. 创建Maven工程
2. 添加依赖(springboot父工程依赖 , web启动器依赖)
-
springboot父工程依赖
<parent><!-- spring-boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version> </parent>
-
web启动器依赖
<dependencies><!-- 导入对应启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
3. 编写启动引导类(springboot项目运行的入口)
package com.hky;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author hky* @date ${DATE}* @Description*/// 1. 包含配置类 @SpringBootConfiguration// 2. 自动加载配置 @EnableAutoConfiguration// 3. @ComponentScan 默认扫描当前类所在包,子包的注解@SpringBootApplication //启动类public class Main {public static void main(String[] args) {SpringApplication.run(Main.class,args);//自动创建ioc容器,启动tomcat服务器软件}}
4. 编写处理器Controller
package com.hky.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** @author hky* @date 2024/6/28* @Description*/@RestController@RequestMapping("hello")public class HelloController {@GetMapping("boot")public String hello(){return "hello springboot3!!";}}
5. 启动项目
点击启动类,启动项目
1.2 项目理解
1. 依赖不需要写版本原因
- 每个boot项目都有一个父项目
spring-boot-starter-parent
- parent的父项目是
spring-boot-dependencies
,父项目把所有常见的jar的依赖版本都声明好了。
2. 启动器(Starter)
Starter的是一组预定义的依赖项集合
作用:简化Spring应用程序的配置和构建过程,以便在启动应用程序时自动引入所需的库、配置和功能。
- 使用Starter:在 pom.xml 中添加所需的Starter依赖,Spring Boot会自动处理依赖管理和配置。
- spring boot提供的全部启动器地址
3. @SpringBootApplication注解
- @SpringBootApplication注解是Spring Boot框架中的核心注解,它的主要作用是
简化和加速Spring Boot应用程序的配置和启动过程
。 - 其中包含:
(1)
@EnableAutoConfiguration
注解:启用Spring Boot的自动配置机制
(2)@ComponentScan
注解:自动扫描并加载应用程序中的组件
(3)@Configuration
注解:将被标注的类声明为配置类。配置类可以包含Spring框架相关的配置、Bean定义,以及其他的自定义配置。使得配置和启动可以同时发生。
二. SpringBoot配置文件
2.1 统一配置管理
SpringBoot 进行统一的配置管理,任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(
application.properties
或application.yml
)中!
- 配置文件应该放置在Spring Boot工程的src/main/resources目录下
- 命名:application 后缀 .properties / .yaml / .yml
- 若同时存在application.properties | application.yml(.yaml) , properties的优先级更高。
2.2 properties配置文件使用
-
在resources文件夹下创建一个application.properties 配置文件
配置文件内用key=值
的形式书写配置文件\server.port=8081 server.servlet.context-path=/huahua# 自定义 hky.name=hekaiyan hky.age=18
-
读取配置文件
使用@Value(“${hky.name}”)@RestController @RequestMapping("hello") public class HelloController {@Value("${hky.name}")private String name;@GetMapping("boot")public String hello(){System.out.println(name);return "hello springboot3!!";} }
2.3 yaml配置文件使用
-
YAML:一种基于
层次结构
的数据序列化格式,旨在提供一种易读、人类友好的数据表示方式。 -
YAML配置文件的扩展名是yaml 或 yml
server:port: 8081servlet:context-path: /huahuahky:info:name: hekaiyan #此时,冒号属性后面必须有一个空格age: 18anims: #数组- dog- cat
2.4 批量配置文件注入
@ConfigurationProperties
:可以将一些配置属性批量注入到bean对象。
- 创建实体类,在实体类中添加属性和注解(属性名称和配置文件中的key必须要保持一致才可以注入成功)
package com.hky.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller;import java.util.List;/*** @author hky* @Description** 读取配置文件信息:* 1. @Value读取* 只能读取一个值,不能读取数组* 2. 批量读取 @ConfigurationProperties(prefix = "")*/ @Data @Component @ConfigurationProperties(prefix = "hky.info") public class User {private String name;private String age;private List<String> anims;}
2.5 多环境配置和使用
Spring Boot中,可以使用多环境配置来根据不同的运行环境(如开发、测试、生产)加载不同的配置。
-
通过yaml方式实现多环境配置
application-dev.yamlhky:info:name: hekaili
application-test.yaml
hky:info:age: 20
application.yaml
server:port: 8081servlet:context-path: /huahuahky:info:name: hekaiyan #此时,冒号属性后面必须有一个空格age: 18anims: #数组- dog- catspring:profiles:active: test,dev # 激活外部配置# 外部配置的 key 与 application 的 key 重复,外部配置覆盖
-
controller类
@RestController @RequestMapping("user") public class HelloController {@Autowiredprivate User user;@GetMapping("show")public User show(){return user;}}
-
测试显示
-
注
:如果设置了spring.profiles.active,并且和application有重叠属性,以active设置优先。 -
也可使用
properties
以及命令行参数
实现多环境配置