SSM 05 SpringBoot yaml mybatisplus

news2025/1/7 22:24:33

01-SpringBoot工程入门案例开发步骤

SpringBoot 是 Pivotal 团队提供的全新框架,设计目的是简化 Spring 应用的初始搭建以及开发过程

使用了 Spring 框架后已经简化了我们的开发。而 SpringBoot 又是对 Spring 开发进行简化的,可想而知 SpringBoot使用的简单及广泛性

既然 SpringBoot 是用来简化 Spring 开发的,那我们就先回顾一下,以 SpringMVC 开发为例:

1. 创建工程,并在 pom.xml 配置文件中配置所依赖的坐标

2. 编写 web3.0 的配置类

作为 web 程序, web3.0 的配置类不能缺少,而这个配置类还是比较麻烦的,代码如下

3. 编写 SpringMVC 的配置类

做到这只是将工程的架子搭起来。要想被外界访问,最起码还需要提供一个 Controller 类,在该类中提供一个方法。

4. 编写 Controller

从上面的 SpringMVC 程序开发可以看到,前三步都是在搭建环境,而且这三步基本都是固定的。

SpringBoot 就是对这三步进行简化了。接下来我们通过入门案例来体现 SpingBoot 简化 Spring 开发。

02-SpringBoot工程官网创建方式

  • 坐标

Spring 程序中的坐标需要自己编写,而且坐标非常多

SpringBoot 程序中的坐标是我们在创建工程时进行勾选自动生成的

  • web3.0配置类

Spring 程序需要自己编写这个配置类。这个配置类大家之前编写过,肯定感觉很复杂

SpringBoot 程序不需要我们自己书写

  • 配置类

Spring/SpringMVC 程序的配置类需要自己书写。而 SpringBoot 程序则不需要书写。

注意: 基于Idea的 Spring Initializr 快速构建 SpringBoot 工程时需要联网

03-SpringBoot程序快速启动

以后我们和前端开发人员协同开发,而前端开发人员需要测试前端程序就需要后端开启服务器,这就受制于后端开发人员。为了摆脱这个受制,前端开发人员尝试着在自己电脑上安装 Tomcat 和 Idea ,在自己电脑上启动后端程序,这显然不现实。

我们后端可以将 SpringBoot 工程打成 jar 包,该 jar 包运行不依赖于 Tomcat 和 Idea 这些工具也可以正常运行,只是这个 jar 包在运行过程中连接和我们自己程序相同的 Mysql 数据库即可。这样就可以解决这个问题,如下图

那现在问题是如何打包呢?

1.1.4.2 打包

由于我们在构建 SpringBoot 工程时已经在 pom.xml 中配置了如下插件

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

所以我们只需要使用 Maven 的 package 指令打包就会在 target 目录下生成对应的 Jar 包

注意:该插件必须配置,不然打好的 jar 包也是有问题的。
1.1.4.3 启动

进入 jar 包所在位置,在 命令提示符cmd 中输入如下命令

jar -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar

执行上述命令就可以看到 SpringBoot 运行的日志信息

04-SpringBoot简介(起步依赖)

原始 Spring 环境搭建和开发存在以下问题:

  • 配置繁琐

  • 依赖设置繁琐

SpringBoot 程序优点恰巧就是针对 Spring 的缺点

  • 自动配置。这个是用来解决 Spring 程序配置繁琐的问题

  • 起步依赖。这个是用来解决 Spring 程序依赖设置繁琐的问题

  • 辅助功能(内置服务器,...)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用 tomcat 插件,而是使用 SpringBoot 内置的服务器。

starter起步依赖

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

parent

  • 所有 SpringBoot 项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的

  • spring-boot-starter-parent(2.5.0)与 spring-boot-starter-parent(2.4.6)共计57处坐标版本不同

实际开发

  • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供

G:groupid
A:artifactId
V:version
  • 如发生坐标错误,再指定version(要小心版本冲突)

05-Spring简介(辅助功能之切换web服务器)

创建的每一个 SpringBoot 程序时都包含一个类似于下面的类,我们将这个类称作引导类

06-配置文件格式(3种)

我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1

在线上环境我们还是希望将端口号改为 80,这样访问时就可不写端口号了,http://localhost/books/1

而 SpringBoot 程序如何修改呢?SpringBoot 提供了多种属性配置方式

注意:SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已。

    • application.properties配置文件

现在需要进行配置,配合文件必须放在 resources 目录下,而该目录下有一个名为 application.properties 的配置文件,我们就可以在该配置文件中修改端口号,在该配置文件中书写 port , 配置文件内容如下:

server.port=80
    • application.yml配置文件

删除 application.properties 配置文件中的内容。在 resources 下创建一个名为 application.yml 的配置文件,在该文件中书写端口号的配置项,格式如下:

server:
    port: 81
==注意: 在 :后,数据前一定要加空格。==

而在 yml 配置文件中也是有提示功能的,我们也可以在该文件中书写 port ,然后 idea 就会提示并书写成上面的格式

    • application.yaml配置文件

删除 application.yml 配置文件和 application.properties 配置文件内容,然后在 resources 下创建名为 application.yaml 的配置文件,配置内容和后缀名为 yml 的配置文件中的内容相同,只是使用了不同的后缀名而已

application.yaml 配置文件内容如下:

server:
    port: 83

三种配置文件的优先级是:

application.properties > application.yml > application.yaml(了解)

==注意:==
SpringBoot 核心配置文件名为 application
SpringBoot 内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性
例如要 设置日志的级别时,可以在配置文件中书写 logging,就会提示出来。配置内容如下
logging:
  level:
    root: info

07-yaml格式

2.2.1 语法规则
  • 大小写敏感(区分大小写)

  • 属性层级关系使用多行描述,每行结尾使用冒号结束(enterprise:)

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

空格的个数并不重要,只要保证同层级的左侧对齐即可

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

  • # 表示注释

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

数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔,例如

enterprise:
  name: itcast
  subject:
    - Java
    - 前端

08-yaml数据读取方式(3种)

2.3.2.1 使用 @Value注解

使用 @Value("表达式") 注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是: ${一级属性名.二级属性名……}

我们可以在 BookController 中使用 @Value 注解读取配合文件数据,如下

@RestController
@RequestMapping("/books")
public class BookController {
    @Value("${lesson}")
    private String lesson;
    @Value("${server.port}")
    private Integer port;
    @Value("${enterprise.subject[0]}")
    private String subject_00;
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(lesson);
        System.out.println(port);
        System.out.println(subject_00);
        return "hello , spring boot!";
    }
}
2.3.2.2 Environment对象 所有的数据封装到 Environment 对象

上面方式读取到的数据特别零散,SpringBoot 还可以使用 @Autowired 注解注入 Environment 对象的方式读取数据。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用 Environment 对象的 getProperty(String name) 方法获取。具体代码如下:

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private Environment env;
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(env.getProperty("lesson"));
        System.out.println(env.getProperty("enterprise.name"));
        System.out.println(env.getProperty("enterprise.subject[0]"));
        return "hello , spring boot!";
    }
}
注意:这种方式, 框架内容大量数据,而在开发中我们很少使用。
2.3.2.3 自定义对象(常用)

SpringBoot 还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:

  • 将实体类 bean 的创建交给 Spring 管理。

在类上添加 @Component 注解

  • 使用 @ConfigurationProperties 注解表示加载配置文件

在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据

具体代码如下:

Enterprise 实体类内容如下:

@Component//将实体类 bean 的创建交给 Spring 管理
@ConfigurationProperties(prefix = "enterprise")//加载配置文件
public class Enterprise {
    private String name;
    private int age;
    private String tel;
    private String[] subject;
    //getset方法
    @Override
    public String toString() {
        return "Enterprise{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                ", subject=" + Arrays.toString(subject) +
                '}';
    }    }

BookController 内容如下:

@RestController
@RequestMapping("/books")
public class BookController {
    @Autowired
    private Enterprise enterprise;
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println(enterprise.getName());
        System.out.println(enterprise.getAge());
        System.out.println(enterprise.getSubject());
        System.out.println(enterprise.getTel());
        System.out.println(enterprise.getSubject()[0]);
        return "hello , spring boot!";
    }
}

使用第三种方式,在实体类上有如下警告提示

这个警告提示解决是在 pom.xml 中添加如下依赖即可

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

09-多环境开发配置

2.4.1 yaml文件
2.4.2 properties文件

10-多环境命令行启动参数设置

我们知道 jar 包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。 这种方式显然有点麻烦,而 SpringBoot 提供了在运行 jar 时设置开启指定的环境的方式,如下

java –jar xxx.jar –-spring.profiles.active=test

那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式

java –jar xxx.jar –-server.port=88

当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下

java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test

大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实 SpringBoot 官网已经进行了说明,参见 :

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config

进入上面网站后会看到如下页面

11-多环境开发兼容问题(Maven与boot)

Maven为主

打包失败;原因如下:

12-配置文件分类

13-springboot整合junit

14-springboot整合mybatis

15-案例: 基于springboot实...

01-MybatisPlus入门案例

02-MyBatisPlus简介

03-标准CRUD制作

04-标准分页功能制作

05-条件查询的三种格式

06-条件查询null判定

07-查询投影

08-查询条件设置

09-映射匹配兼容性

10-id生成策略

11-多数据操作(删除与查询)

12-逻辑删除

13-乐观锁

14-代码生成器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux挂载新磁盘

一、查看磁盘挂载状态&#xff1a; fdisk -l df -h 二、为其中一个磁盘创建新的分区&#xff0c;参考&#xff1a; linux用fdisk创建分区,在Linux下用fdisk创建分区_weixin_39968410的博客-CSDN博客 sudo fdisk /dev/nvme0n1 1. 创建主分区&#xff1a; -----------------…

第8章 NVS

NVS Blob块存储 1. 演示app_main任务栈溢出 2. 设置app_main任务栈大小 打开menuconfig&#xff0c;输入main&#xff0c;如下图所示 默认栈大小为3584字节&#xff0c;这里改为35840字节&#xff0c;重新编译 3. Blob存储结果 #include <stdio.h> #include <st…

使用nginx搭建HTTP FLV流媒体服务器

使用nginx搭建HTTP FLV流媒体服务器 文章目录使用nginx搭建HTTP FLV流媒体服务器1 HTTP FLV简介2 HTTP FLV流媒体服务搭建3 结果验证1 HTTP FLV简介 前文已经介绍了RTSP、RTMP、HLS的流媒体协议&#xff0c;还有一种比较常见的流媒体协议HTTP FLV&#xff0c;其兼具RTMP的实时…

Kettle源码启动运行

Kettle源码运行环境如下&#xff1a; windows10 Kettle 9.3.0.2 Java JDK 11 IntelliJ IDEA 2021.2.2 (Community Edition) Maven 3.8.1&#xff08;版本不需要太高 &#xff09; 导入kettle到IDEA 可通过kettle的GIthub地址获取 kettle的克隆连接&#xff0c;或直接下载ZIP压…

python2和python3环境安装

一、背景 ​ 众所周知&#xff0c;python当前有两大主流版本&#xff0c;分别是Python2和Python3系列&#xff0c;其中Python3因为对Python2做了较大的优化&#xff0c;使得Python3不会向下兼容&#xff0c;但是工作和学习中&#xff0c;有很多项目需要Python2的环境&#xff…

SAP 物料账未分摊差异分析

今天在开发处理未分摊差异程序的时候&#xff0c;偶然在网络上看到一篇这样的文章&#xff0c;挺有意思的&#xff0c;特意转载过来&#xff0c;方便大伙学习之用&#xff0c;若有异议&#xff0c;立即撤回。 利用CKMLCP运行完物料分类账之后&#xff0c;差异科目余额通常为0&…

Golang网络聊天室案例

1.聊天室设计分析 一. 概览 实现 个网络聊天室&#xff08;群&#xff09; 功能分析&#xff1a; 上线下线聊天&#xff0c;其他人&#xff0c;自己都可以看到聊天消息查询当前聊天室用户名字 who可以修改自己名字 rename | Duke超时踢出 技术点分析&#xff1a; 1 . sock …

Notion 汉化Macwindows客户端

1、注册/登录账号&#xff1a; https://www.notion.so/zh-cn 2、下载桌面应用&#xff1a; https://www.notion.so/desktop 3、下载汉化js插件 地址&#xff1a;https://github.com/Reamd7/notion-zh_CN 点击最后一次更新的标签&#xff0c;下载【 notion-zh_CN.js 】文件 …

[激光原理与应用-64]:激光器-器件 - 光电二极管

第1章 概述光电二极管&#xff08;Photo-Diode&#xff09;和普通二极管一样&#xff0c;也是由一个PN结组成的半导体器件&#xff0c;也具有单方向导电特性。但在电路中它不是作整流元件&#xff0c;而是把光信号转换成电信号的光电传感器件。普通二极管在反向电压作用时处于截…

如何在Windows上同时搭建多个版本的golang环境——g

假如说我们不同的项目使用的go版本是不一样的&#xff0c;当我们想切换时&#xff0c;不懂的人可能就直接卸载掉现有的go环境去安装新的go环境了&#xff0c;这种方法可行但是有点呆&#xff0c;今天推荐一个好用的go版本管理工具——g,不是寄了的寄&#xff0c;就是英文字母g。…

jQuery(一):选择器、样式操作、动画效果

jQuery选择器样式操作jQuery 动画效果选择器 1.基础选择器 语法格式&#xff1a; $(“选择器”) // 里面选择器直接写 CSS 选择器即可&#xff0c;但是要加引号 常见选择器类型 例如&#xff1a; 2.样式设置 语法格式&#xff1a; $(‘div’).css(‘属性’, ‘值’) 例如&…

PHP 百度知识图谱数据处理与接入SDK

前言最近的项目在做百度知识图谱相关的&#xff0c;需要实现内容将本地数据处理->数据格式转化->数据接入图谱平台。因为百度提供的sdk为Python的sdk&#xff0c;所以我需要将Python程序转换成PHP格式。图谱生产流程介绍1.知识定义建立相应的scheme&#xff0c;确定类目以…

探究SQL SERVER 更改跟踪

介绍SQL SERVER 在2008 以上的版本提供两个用于数据库中跟踪数据更改的功能&#xff1a;变更数据捕获&#xff08;CDC &#xff09;与更改跟踪&#xff08;CT &#xff09;。这两个功能使应用程序能够确定对数据库中的用户表所做的 DML 更改&#xff08;插入、更新和删除操作 &…

Python基础(二十五):异常处理基础知识

文章目录 异常处理基础知识 一、了解异常 二、异常的写法 1、语法

HNUCM蓝桥杯Python组寒假第二次练习

文章目录1316: 选房子2158: 倍数问题2196: X星游戏1034: 近似回文词1749: 最少硬币2079: X星大学2086: 奖牌榜总结&#xff1a;1316: 选房子 1316: 选房子 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 栋栋和李剑已经大四了&#xff0c;想要出去找…

UDS诊断系列介绍13-31服务

本文框架1. 系列介绍1.1 31服务概述2. 31服务请求与应答2.1 31服务请求2.2 31服务正响应2.3 31服务否定响应3. Autosar系列文章快速链接1. 系列介绍 UDS&#xff08;Unified Diagnostic Services&#xff09;协议&#xff0c;即统一的诊断服务&#xff0c;是面向整车所有ECU的…

”凌寒独自开“绽放不一样的自己

目录 1&#xff1a;介绍 2&#xff1a;细节介绍 ​编辑 3&#xff1a;范例演示 4&#xff1a;平台助力 5&#xff1a;冲冲冲 1&#xff1a;介绍 每一个程序员都有一个产品的梦想&#xff0c;在独自开&#xff0c;每一位开发者为自己写代码。 毕竟谁又想错过每一个展示自…

CSDN网站勋章获取介绍

持之以恒&#xff1a;已下线&#xff0c;目前无法获取 签到勋章&#xff1a;签到新秀、签到达人、签到王者都已下线&#xff0c;目前无法获取 分享勋章&#xff1a;分享学徒、分享小兵、分享达人、分享精英、分享宗师、分享王者、至尊王者都已下线&#xff0c;目前无法获取 …

Git Extensions的安装与使用

一&#xff0c;介绍&#xff1a; Git Extensions是一个工具包&#xff0c;旨在使Windows下的Git更直观。 功能 Git的Windows资源管理器集成 功能丰富的Git用户界面 32位和64位支持 二&#xff0c;安装 csdn下载地址 GitExtensionhttps://download.csdn.net/download/weixin…

前端面试当中 js原型及原型链常考知识点

一、构造函数 讲原型则离不开构造函数&#xff0c;让我们先来认识下构造函数。 1.1 构造函数分为 实例成员 和 静态成员 让我们先来看看他们分别是什么样子的。 实例成员&#xff1a; 实例成员就是在构造函数内部&#xff0c;通过this添加的成员。实例成员只能通过实例化的…