当前位置:   article > 正文

Spring Boot 超详细基本配置_springboot配置

springboot配置

本人语雀访问地址:https://www.yuque.com/qgc226


## 01-开发环境

学习要求

熟悉Spring基础
熟悉Maven使用

环境要求

Java8及以上

Maven 3.5及以上

学习资料

Spring Boot官网:https://spring.io/projects/spring-boot
Spring Boot 官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/
Spring Boot 中文文档:http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/

02-SpringBoot入门案例(Idea联网版)

①创建新模块,选择Spring Initializr,并配置模块相关基础信息

image-20221004085019593

②:选择当前模块需要使用的技术集

image-20221004085404569

③:开发控制器类

//Rest 模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById() {
System.out.println("springboot is running...");
return "springboot is running...";
}
}

④:运行自动生成的Application类

image-20221004101655076

运行结果如下:

image-20221004101822916

⑤:打开浏览器访问url地址为:http://localhost:8080/books

image-20221004102216137

最简SpringBoot程序所包含的基础文件

1.pom.xml文件

2.Application类

Spring程序与SpringBoot程序对比

image-20221004103814203

小结:
  1. 开发SpringBoot程序可以根据向导进行联网快速制作

  2. SpringBoot程序需要基于JDK8进行制作

  3. SpringBoot程序中需要使用何种功能通过勾选选择技术

  4. 运行SpringBoot程序通过运行Application程序入口进行

03-SpringBoot入门案例(官网创建版)

基于SpringBoot官网创建项目,地址:https://start.spring.io/

1.配置springboot

xxxxxxxxxx //账户不能包含特殊字符String validPattern = “[`!@#$%^&()+=|{}‘:;’,\\[\\].<>/?!@#¥%……&()——+|{}【】‘;:”“’。,、?]”;​Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);​if (matcher.find()) {​ return -1;​}java

2.选择依赖

image-20221004105902890

3.生成项目的压缩文件

image-20221004110104826

小结:
  1. 打开SpringBoot官网,选择Quickstart Your Project
  2. 创建工程,并保存项目
  3. 解压项目,通过IDE导入项目

04-SpringBoot入门案例(阿里云版)

基于阿里云创建项目,地址:https://start.aliyun.com

1.创建模块,配置信息

image-20221004110550370

2.技术选型以及版本号

image-20221004111636088

注意事项:

  • 阿里云提供的坐标版本较低,如果需要使用高版本,进入工程后手工切换SpringBoot版本
  • 阿里云提供的工程模板与Spring官网提供的工程模板略有不同
小结:
  1. 选择start来源为自定义URL
  2. 输入阿里云start地址
  3. 创建项目

05-SpringBoot入门案例(手工制作版)

1.手工创建项目(手工导入坐标)

image-20221004112055248

2.修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.6</version>
</parent>

<groupId>com.example</groupId>
<artifactId>springboot_01_04_quickstart</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.手工创建项目(手工制作引导类)

@SpringBootApplication
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}
  • 1
  • 2
  • 3

}

小结:
  1. 创建普通Maven工程
  2. 继承spring-boot-starter-parent
  3. 添加依赖spring-boot-starter-web
  4. 制作引导类Application

总结:

  1. 创建SpringBoot工程的四种方式
    基于Idea创建SpringBoot工程
    基于官网创建SpringBoot工程
    基于阿里云创建SpringBoot工程
    手工创建Maven工程修改为SpringBoot工程

06-教你一招:隐藏文件或文件夹

1.springboot工程需要隐藏的 .mvn;.gitignore;HELP.md;mvnw;mvnw.cmd;*.iml;

image-20221004124747868

小结:

Idea中隐藏指定文件或指定类型文件
Setting → File Types → Ignored Files and Folders
输入要隐藏的文件名,支持*号通配符
回车确认添加

07-入门案例解析:parent,starter,引导类,tomcat

1.parent:

image-20221004142613223

spring-boot-starter-dependencies的pom.xml中我们可以发现,一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。所以起步依赖的作用就是进行依赖的传递。

小结:

开发SpringBoot程序要继承spring-boot-starter-parent
spring-boot-starter-parent中定义了若干个依赖管理
继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
继承parent的形式也可以采用引入依赖的形式实现效果

2. starter

image-20221004143056310

starter
SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

parent
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
spring-boot-starter-parent各版本间存在着诸多坐标版本不同

实际开发
使用任意坐标时,仅书写GAV(groupId, artifactId, version)中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V
如发生坐标错误,再指定Version(要小心版本冲突)

小结:

开发SpringBoot程序需要导入坐标时通常导入对应的starter
每个不同的starter根据功能不同,通常包含多个依赖坐标
使用starter可以实现快速配置的效果,达到简化配置的目的

3.引导类

启动方式

`@SpringBootApplication`

`public class Springboot01QuickstartApplication {`

`public static void main(String[] args) {`

`SpringApplication.*run*(Springboot01QuickstartApplication.class, args);`

`}` 

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目

SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

小结
  1. SpringBoot工程提供引导类用来启动程序

  2. SpringBoot工程启动后创建并初始化Spring容器

4.内嵌tomcat

image-20221004151058265

使用maven依赖管理变更起步依赖项

<dependencies> 

<dependency> 

<groupId>org.springframework.boot</groupId> 

<artifactId>spring-boot-starter-web</artifactId>

*<!--web**起步依赖环境中,排除**Tomcat**起步依赖**-->* 

<exclusions> 

<exclusion> 

<groupId>org.springframework.boot</groupId> 

<artifactId>spring-boot-starter-tomcat</artifactId>

</exclusion>

</exclusions>

</dependency>

*<!--**添加**Jetty**起步依赖,版本由**SpringBoot****starter**控制**-->* 

<dependency> 

<groupId>org.springframework.boot</groupId> 

<artifactId>spring-boot-starter-jetty</artifactId>

</dependency>

</dependencies> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty

小结
  1. 内嵌Tomcat服务器是SpringBoot辅助功能之一

  2. 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理

  3. 变更内嵌服务器思想是去除现有服务器,添加全新的服务器

08-教你一招:复制模块

原则
保留工程基础结构
抹掉原始工程痕迹

1.创建模板

image-20221004155228832

2.复制模板,创建模块

image-20221004160041978

3.修改pom.xml的配置

image-20221004155857147

4.在idea中导入复制后的模块

image-20221004160349270

5.导入模块完成

image-20221004160530284

6.找到pom.xml文件

image-20221004162124097

小结:
  1. 在工作空间中复制对应工程,并修改工程名称
  2. 删除与Idea相关配置文件,仅保留src目录与pom.xml文件
  3. 修改pom.xml文件中的artifactId与新工程/模块名相同
  4. 删除name标签(可选)
  5. 保留备份工程供后期使用

09-属性配置方式

1.修改服务器端口

image-20221004162923285

2.进入配置文件application.properties

  • SpringBoot默认配置文件application.properties,通过键值对配置对应属性

  • 修改配置

    修改服务器端口

    # 服务器端口配制
    server.port=80
    
    • 1
    • 2

10-基础配置

1.修改配置

修改服务器端口
server.port=80

关闭运行日志图标(banner)
spring.main.banner-mode=off

设置日志相关
logging.level.root=debug

logging.level.root=info(默认)

# 服务器端口配置
server.port=80

# 修改banner
# spring.main.banner-mode=off
# spring.banner.image.location=logo.png

# 日志
logging.level.root=info

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.SpringBoot内置属性查询
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
官方文档中参考文档第一项:Application Propertie

小结
  1. SpringBoot中导入对应starter后,提供对应配置属性

  2. 书写SpringBoot配置采用关键字+提示形式书写

11-3种配置文件类型

SpringBoot提供了多种属性配置方式

1.application.properties

server.port=80
  • 1

2.application.yml

server:
  port: 81
  • 1
  • 2

3.application.yaml

server:
  port: 82
  • 1
  • 2
小结:
  1. SpringBoot提供了3种配置文件的格式
    properties(传统格式/默认格式)
    yml(主流格式)
    yaml

12-配置文件加载优先级

SpringBoot配置文件加载顺序
application.properties > application.yml > application.yaml

常用配置文件种类
application.yml

小结:

配置文件间的加载优先级
properties(最高)
yml
yaml(最低)
不同配置文件中相同配置按照加载优先级相互覆盖 (高优先级配置内容会覆盖低优先级配置内容),不同配置文件中不同配置全部保留

13-yaml数据格式

yaml

YAML(YAML Ain’t Markup Language),一种数据序列化格式

1.优点:

​ 1.容易阅读

​ 2.容易与脚本语言交互

​ 3.以数据为核心,重数据轻格式

2.YAML文件扩展名

yml主流

.yaml

yaml语法规则

key: value -> value 前面一定要有空格**

大小写敏感

属性层级关系使用多行描述,每行结尾使用冒号结束

使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

表示注释

核心规则:数据前面要加空格与冒号隔开

3.数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

image-20221005115735789

小结:
  1. yaml语法规则
    大小写敏感
    属性层级关系使用多行描述,每行结尾使用冒号结束
    使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
    属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

    #表示注释

  2. 注意属性名冒号后面与数据之间有一个空格

  3. 字面值、对象数据格式、数组数据格式(略)

14-读取yaml单一属性数据

image-20221005120115226

小结:
  1. 使用@Value配合SpEL读取单个数据
  2. 如果数据存在多层级,依次书写层级名称即可

15-yaml文件中的变量引用

1.在配置文件中可以使用属性名引用方式引用属性

image-20221005120358700

小结:
  1. 在配置文件中可以使用${属性名}方式引用属性值
  2. 如果属性中出现特殊字符,可以使用双引号包裹起来作为字符解析

16-读取yaml全部属性数据

  • 封装全部数据到Environment对象
  • 注意要导这个包
  • import org.springframework.core.env.Environment;

image-20221005120616850

小结:
  1. 使用Environment对象封装全部配置信息
  2. 使用@Autowired自动装配数据到Environment对象中

17-读取yaml引用类型属性数据

1.自定义对象封装指定数据

image-20221005121015001

2.自定义对象封装指定数据的作用

image-20221005121132071

# 创建类,用于封装下面的数据
# 由spring帮我们去加载数据到对象中,一定要告诉spring加载这组信息
# 使用时候从spring中直接获取信息使用

datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/ssm_db
  username: root
  password: root
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
//1.定义数据模型封装yaml文件中对应的数据
//2.定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {

    private String driver;
    private String url;
    private String username;
    private String password;
	//省略get/set/tostring 方法
}    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

自动装配封装数据

 @Autowired
 private MyDataSource myDataSource;
  • 1
  • 2
小结:
  1. 使用@ConfigurationProperties注解绑定配置信息到封装类中
  2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入

18-SpringBoot整合JUnit

1.添加Junit的起步依赖 Spring Initializr 创建时自带

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rJoWXd7R-1665217955088)(C:/Users/86155/AppData/Roaming/Typora/typora-user-images/image-20221005121612411.png)]

2.SpringBoot整合JUnit

image-20221005123223405

@SpringBootTest
名称:@SpringBootTest
类型:测试类注解
位置:测试类定义上方
作用:设置JUnit加载的SpringBoot启动类

小结:
  1. 导入测试对应的starter
  2. 测试类使用@SpringBootTest修饰
  3. 使用自动装配的形式添加要测试的对象

19-整合JUnit——classes属性

image-20221005123600093

小结:
  1. 测试类如果存在于引导类所在包或子包中无需指定引导类
  2. 测试类如果不存在于引导类所在的包或子包中需要通过 classes 属性指定引导类

20-SpringBoot整合MyBatis

①:创建新模块,选择Spring初始化,并配置模块相关基础信息

image-20221005124352043

②:选择当前模块需要使用的技术集(MyBatis、MySQL)

image-20221005124624386

③:设置数据源参数

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url:jdbc:mysql://localhost:3306/mybatis
    username:root
    password:root
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

④:创建user表
在 mybatis 数据库中创建 user 表

image-20221005130325553

tb_user.sq脚本文件

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for tb_user
-- ----------------------------
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `gender` char(1) DEFAULT NULL,
  `addr` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `tb_user` VALUES ('1', 'zhangsan', '123', '男', '北京');
INSERT INTO `tb_user` VALUES ('2', '李四', '234', '女', '天津');
INSERT INTO `tb_user` VALUES ('3', '王五', '11', '男', '西安');
INSERT INTO `tb_user` VALUES ('4', '赵六', '111', '女', '上海');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

⑤:创建实体Bean

image-20221005131031634

public class user {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

⑥: 定义数据层接口与映射配置

@Mapper
public interface UserDao {
    @Select("select * from tb_user where id = #{id}")
    public User getById(Integer id);
}
  • 1
  • 2
  • 3
  • 4
  • 5

⑦:测试类中注入dao接口,测试功能

@SpringBootTest
class Springboot05MybatisApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void contextLoads() {
        System.out.println(userDao.getById(1));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

⑧:运行结果如下

image-20221005132134326

小结:
  1. 勾选MyBatis技术,也就是导入MyBatis对应的starter
  2. 数据库连接相关信息转换成配置
  3. 数据库SQL映射需要添加@Mapper被容器识别到

21-SpringBoot整合MyBatis常见问题处理

image-20221005132413758

1.SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区

jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
  • 1

2.MySQL 8.X驱动强制要求设置时区

  • 修改url,添加serverTimezone设定
  • 修改MySQL数据库配置(略)

3.驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver

22-SpringBoot整合MyBatisPlus

创建新模块,选择Spring初始化,并配置模块相关基础信息

image-20221005133243409

选择当前模块需要使用的技术集(MybatisPlus,MySQL)—官网正统做法

image-20221005133336707

(也可以选择用阿里云)

创建新模块,选择Spring初始化,并配置模块相关基础信息

image-20221005142615156

选择当前模块需要使用的技术集(MybatisPlus,MySQL)–阿里云配置

image-20221005142814746

官网正统做法:

①:手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

注意事项: 由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version

②:定义数据层接口与映射配置,继承BaseMapper

@Mapper
public interface UserDao extends BaseMapper<User> {

}
  • 1
  • 2
  • 3
  • 4

③:其他同SpringBoot整合MyBatis,可参考上文:配置数据源,实体类,数据库文件

④:测试类中注入dao接口,测试功能

image-20221005134820658

@SpringBootTest
class Springboot06MybatisPlusApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void contextLoads() {
        userDao.selectById(2);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

⑤运行结果如下:

这里由于创建数据库时候有前缀,导致报错。

image-20221005135324629

image-20221005135213882

注意: 如果你的数据库表有前缀要在 application.yml 添加如下配置:

#设置Mp相关的配置
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tb_
  • 1
  • 2
  • 3
  • 4
  • 5

填完如下配置之后:

image-20221005135840396

运行如下:成功了

image-20221005135806121

小结:

1.手工添加MyBatis-Plus对应的starter
2.数据层接口使用BaseMapper简化开发
3.需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标

23-SpringBoot整合Druid

创建新模块,选择Spring初始化,并配置模块相关基础信息

image-20221005140248047

选择当前模块需要使用的技术集(Druid、MySQL)

image-20221005140506785

①: 导入Druid对应的starter

   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>druid-spring-boot-starter</artifactId>
       <version>1.2.6</version>
   </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

②: 指定数据源类型 (这种方式只需导入一个 Druid 的坐标)

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

或者 变更Druid的配置方式(推荐) 这种方式需要导入 Druid对应的starter

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
      username: root
      password: root
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

③:其他同SpringBoot整合MyBatis,可参考上文:配置数据源,实体类,Dao层

④:运行如下

image-20221005142112623

小结:

1.整合Druid需要导入Druid对应的starter
2.根据Druid提供的配置方式进行配置
3.整合第三方技术通用方式

总结
  • 导入对应的starter
  • 根据提供的配置格式,配置非默认值对应的配置项
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/157209
推荐阅读
相关标签
  

闽ICP备14008679号