当前位置: 首页 > news >正文

SSM 05 SpringBoot yaml mybatisplus

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-代码生成器

相关文章:

  • 十五天学会Autodesk Inventor,看完这一系列就够了(七),工程图纸
  • 快速理解机器学习、深度学习与自然语言处理
  • 【索引】引用A survey on pickup and delivery problems的文章
  • 集成学习、Bagging集成原理、随机森林构造过程、随机森林api与案例、boosting集成原理、梯度提升决策树(GBDT)、XGBoost与泰勒展开式
  • WebSocket长连接接入支付宝消息服务,实现消息通知
  • 基于迁移学习的人脸识别实战(完整代码+数据)
  • 什么是前后端分离?
  • 【蓝桥杯】历届真题 时间显示(省赛)Java
  • MyBatis 详解 (2) -- 增删改操作
  • 数学计算-C语言实现
  • 【Java寒假打卡】Java基础-类加载器
  • c语言数组复习
  • 为什么我创建的百度百科没有过审?
  • Spring3.*中ASM和JDK8版本冲突问题及解决方案
  • Umi、React框架学习笔记
  • 测试开发 | 专项测试技术初识Hook
  • python2和python3环境安装
  • 目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
  • 02.指针的进阶
  • windows下Docker部署Flask的教程