SpringBoot自学笔记《黑马程序员》

2023-11-10

SpringBoot

SpringBoot简介

SpringBoot是用来简化 Spring 应用的初始搭建以及开发过程

Spring框架开发,我们首先需要创建工程,然后在pom.xml中导入需要的依赖坐标(servlet、mybatis、spring-webmvc等相关依赖),然后创建配置类,编写SpringConfig、ServletConfig、JdbcConfig、MybatisConfig以及SpringmvcConfig等相关文件代码,然后创建接口,编写dao层、service层代码实现接口,到这里整个工程的大体框架就已经搭建完毕,要想被外界访问,还需要编写Controller类,在控制类中提供方法。

SpringBoot是对控制类之前的步骤(搭建环境)进行整合简化。

SpringBoot相比于Spring优点:

  • 自动配置。这个是用来解决 Spring 程序配置繁琐的问题
  • 起步依赖。这个是用来解决 Spring程序依赖设置繁琐的问题
  • 辅助功能(内置服务器,…)。我们在启动 SpringBoot 程序时既没有使用本地的 tomcat 也没有使用 tomcat 插件,而是使用 SpringBoot 内置的服务器。

前后端协同开发的时候,后端可以将SpringBoot项目打成jar包,前端人员可以不需要开发工具,只需要连接相同的数据库即可使用。关于maven打包问题在SSM框架专栏有详细讲解。

在这里插入图片描述

打包之后,寻找target目录下打包好的jar包,用cmd命令行的方法运行:

java -jar springboot_01.jar

SpringBoot开发步骤

  • 创建新模块,选择Spring初始化,并配置模块相关基础信息
  • 选择当前模块需要使用的技术集
  • 开发控制器类(创建Controller包)
  • 运行自动生成的Application类

具体操作:

点击 + 选择 New Module 创建新模块

在这里插入图片描述

选择 Spring Initializr ,用来创建 SpringBoot 工程

在这里插入图片描述

SpringBoot 工程进行相关的设置

在这里插入图片描述

注意:打包方式这里需要设置为 Jar

选中 Web,然后勾选 Spring Web

在这里插入图片描述

至此,一个SpringBoot工程就创建完成了。

SpringBoot配置文件

属性配置

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

  • application.properties
server.port=80
  • application.yml
server:
	port: 81
  • application.yaml
server:
	port: 82

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

冒号后面必须有空格!!!

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

application.properties > application.yml > application.yaml

YAML格式

YAML 文件扩展名:

  • .yml (主流)
  • .yaml

上面两种后缀名都可以,以后使用更多的还是 yml 的。

优点:

  • 容易阅读

    yaml 类型的配置文件比xml类型的配置文件更容易阅读,结构更加清晰

  • 容易与脚本语言交互

  • 以数据为核心,重数据轻格式

    yaml 更注重数据,而 xml 更注重格式

语法规则

  • 大小写敏感

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

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

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

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

  • # 表示注释

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

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

enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:
    - Java
    - 前端
    - 大数据

YAML读取

在controller中读取配置数据有三种方式:

1、使用 @Value注解

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

2、Environment对象

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

3、自定义对象(常用)

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

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

    在类上添加 @Component 注解

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

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

  • 在 BookController 中进行注入

Enterprise 实体类内容如下:

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    private String name;
    private int age;
    private String tel;
    private String[] subject;
    //Setter and Getter
    //toString方法
}
@RestController
@RequestMapping("/books")
public class BookController {
    //yaml读取数据第一种方法:value
    @Value("${lesson}")
    private String lesson;
    @Value("${server.port}")
    private Integer port;
    @Value("${enterprise.subject[0]}")
    private String subject_00;

    //yaml读取数据第二种方法:environment对象
    @Autowired
    private Environment environment;

    //yaml读取数据第三种方法:自定义对象
    @Autowired
    private Enterprise enterprise;

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
//        System.out.println("id ==> "+id);
        System.out.println(lesson);
        System.out.println(port);
        System.out.println(subject_00);
        System.out.println("---------------------");
        System.out.println(environment.getProperty("lesson"));
        System.out.println(environment.getProperty("server.port"));
        System.out.println(environment.getProperty("enterprise.tel"));
        System.out.println(environment.getProperty("enterprise.subject[1]"));
        System.out.println("---------------------");
        System.out.println(enterprise);

        return "hello , spring boot!";
    }
}

多环境配置

以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。

在这里插入图片描述

来回的修改配置会很麻烦,而 SpringBoot 给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明

application.yml 配置文件内容如下(使用 --- 来分割不同的配置):

#设置启用的环境
spring:
  profiles:
    active: dev

---
#开发
spring:
  profiles: dev
server:
  port: 80
---
#生产
spring:
  profiles: pro
server:
  port: 81
---
#测试
spring:
  profiles: test
server:
  port: 82
---

properties 类型的配置文件配置多环境需要定义不同的配置文件:

application-dev.properties 是开发环境的配置文件。我们在该文件中配置端口号为 80

application-test.properties 是测试环境的配置文件。我们在该文件中配置端口号为 81

application-pro.properties 是生产环境的配置文件。我们在该文件中配置端口号为 82

SpringBoot 只会默认加载名为 application.properties 的配置文件,所以需要在 application.properties 配置文件中设置启用哪个配置文件,配置如下:

spring.profiles.active=pro

配置文件级别

SpringBoot 定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。

SpringBoot 中4级配置文件放置位置:

  • 1级:classpath(类路径):application.yml
  • 2级:classpath:config/application.yml
  • 3级:file (jar包所在位置创建文件夹):application.yml
  • 4级:file :config/application.yml (最高)

说明:级别越高优先级越高

SpringBoot整合junit

创建BookService接口及其实现类,编写测试类,将 BookService 注入到该测试类中:

@SpringBootTest
class Springboot01TestApplicationTests {

    @Autowired
    private BookService bookService;

    @Test
    public void save() {
        bookService.save();
    }
}

注意:这里的引导类所在包必须是测试类所在包及其子包。

例如:

  • 引导类所在包是 com.itheima
  • 测试类所在包是 com.itheima

如果不满足这个要求的话,就需要在使用 @SpringBootTest 注解时,使用 classes 属性指定引导类的字节码对象。如 @SpringBootTest(classes = Springboot01TestApplication.class)

SpringBoot整合mybatis

创建模块

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

在这里插入图片描述

在这里插入图片描述

定义实体类、dao接口及测试类

com.itheima.domain 包下定义实体类 Book,内容如下:

public class Book {
    private Integer id;
    private String name;
    private String type;
    private String description;
    //setter and  getter
    //toString
}

com.itheima.dao 包下定义 BookDao 接口,内容如下:

public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

test/java 下定义包 com.itheima ,在该包下测试类,内容如下:

@SpringBootTest
class Springboot08MybatisApplicationTests {
	@Autowired
	private BookDao bookDao;
	@Test
	void testGetById() {
		Book book = bookDao.getById(1);
		System.out.println(book);
	}
}

编写配置

application.yml 配置文件中配置如下内容,连接数据库:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root

测试

运行测试方法,我们会看到如下错误信息

在这里插入图片描述

错误信息原因是 Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理,但是现在并没有告诉 Mybatis 哪个是 dao 接口。而我们要解决这个问题需要在BookDao 接口上使用 @MapperBookDao 接口改进为

@Mapper
public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

使用Druid数据源

上述操作并没有指定数据源,SpringBoot 有默认的数据源,我们也可以指定使用 Druid 数据源,按照以下步骤实现:

1、导入 Druid 依赖

2、在 application.yml 配置文件配置

可以通过 spring.datasource.type 来配置使用什么数据源。配置文件内容可以改进为:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot自学笔记《黑马程序员》 的相关文章

随机推荐

  • Selenium 中文手册

    五 Selenium 中文手册 Commands 命令 Action 对当前状态进行操作 失败时 停止测试 Assertion 校验是否有产生正确的值 Element Locators 指定HTML中的某元素 Patterns 用于模式匹配
  • 解读YOLO v7的代码(一)模型结构研究

    YOLO v7在今年7月份推出 模型的性能和速度相比以往版本有了很大的提升 我也想好好研究一下YOLO v7模型 因此把官方的代码库下载下来进行研究 尝试更好的理解这个模型 从文档中我们可以看到 如果要从头开始训练 可以输入以下命令 pyt
  • MMdetection数据集格式转换——LabelImg/xml/yolo格式转Custom自定义格式数据集/Coco格式数据集

    训练customdataset自定义数据集 一 修改 1 将mmdetection configs yolox yolox s 8x8 300e coco py中的metric设置为mAP 如下图 2 将mmdetection mmdet
  • Python学习历程

    学习目录 Python 的安装与使用 安装 Python 集成环境 Python 语法基础 Python 二进制位运算 数据类型与基本输入输出 序列 字符串基本操作 列表的基本操作 二维列表 字典的基本操作 判断与循环 多分支语句的三种结构
  • LeetCode(力扣)96. 不同的二叉搜索树Python

    LeetCode96 不同的二叉搜索树 题目链接 代码 题目链接 https leetcode cn problems unique binary search trees description 代码 class Solution def
  • php exec ctf,[CTF_web]exec/exec1.php

    CTF web 源码如下 Get input target REQUEST ip var dump target target trim target var dump target Set blacklist substitutions
  • Java 形参与实参

    转自 https dailycast github io Java 形参与实参 前几天在头条上看到一道经典面试题 引发了一些思考 也是写这篇文章的导火索 背景 请看题 public class Main public static void
  • 程序结构(顺序结构、选择结构、循环结构)

    程序结构 在C语言程序里 一共有三种程序结构 顺序结构 选择结构 分支结构 循环结构 1 顺序结构 按照实物本身特性 必须一个接着一个来完成 2 选择结构 到某个节点后 会根据一次判断结果来决定之后走哪一个分支 3 循环结构 循环结构有一个
  • 使用python脚本批量对gprmax建模(用不同含水量、rebar半径、rebar深度)

    1 软件 1 spyder 2 Gprmax 2 代码及解释 1 首先在spyder中编辑好python部分代码 代码如下 主要是确定含水量 半径 深度三个部分 随机生成需要的范围内的数据 import scipy interpolate
  • stm32通道

    什么是通道 通道是一个计算机词汇 属于操作码 记数段 内存地址段等 能够完成内存与外设之间数据的传输 传输信息的数据通路 计算机系统中传送信息和数据的装置 主要有主存储器读写通道和输入 输出通道 能接收中央处理机的命令 独立执行通道程序 协
  • Python3,掌握这几种并行处理,轻轻松松提升for循环速度。

    并行处理几种方法 1 引言 2 并行处理 2 1 定义 2 2 并行处理优缺点 2 3 并行处理的常用库 2 4 代码示例 2 4 1 multiprocessing 2 4 2 concurrent futures 2 4 3 jobli
  • Linux环境搭建 JDK,简单超级实用

    Linux环境搭建 JDK 一 将下载的linux版本jdk 解压 解压命令 tar zxvf 文件名 二 配置环境变量 1 用vim编辑器打开profile文件 gt vim etc profile 并在配置文件末尾加上环境变量配置 如下
  • css 网格布局_CSS网格布局:Fr单元

    css 网格布局 介绍 Introduction With CSS Grid Layout we get a new flexible unit the Fr unit Fr is a fractional unit and 1fr is
  • C# GET方式请求时url地址长度超过限制问题解决

    问题分析 一般通过Get方式请求 服务器只能接受url长度不超过2048个字节的请求 问题解决 我们可以将服务器能够接受的最大请求长度设置为100MB 在Web config文件中添加以下配置
  • 自定义MVC框架原理

    目录 一 什么是MVC 1 模型 Model 2 视图 View 3 控制器 Controller 二 自定义mvc核心思想 三 自定义MVC的核心原则 四 三层架构和MVC的区别 1 结构层次不同 2 重点关注不同 3 强调的功能不同 4
  • install Android Studio 1.3 —— VM Acceleration on Linux

    http developer android com tools devices emulator html vm linux Configuring VM Acceleration on Linux Linux based systems
  • 堪称全网最详细的Java八股面试文,面试必备(附答案)

    前言 听一些小伙伴说 近期的面试越来越难了 为了帮大家节约时间 给大家搞来了今年上半年碰到的大厂Java面试题合集 内容非常的全面 耗时半月 终于把牛客网上的互联网大厂Java面试八股文整理成了PDF合集 其中概括的知识点有 java基础
  • virtualenv创建“隔离”的Python运行环境

    Windows 安装mkvirtualenv pip install virtualenv pip install virtualenvwrapper 新建虚拟python环境 1 创建python工程目录 2 创建一个独立的Python运
  • OpenCV教程——Mat对象

    1 Mat对象和IplIamge对象 Mat对象是OpenCV2 0之后引进的图像数据结构 自动分配内存 不存在内存泄漏的问题 是面向对象的数据结构 分为两个部分 头部和数据部分 IplIamge是从2001年OpenCV发布之后就一直存在
  • SpringBoot自学笔记《黑马程序员》

    SpringBoot 文章目录 SpringBoot SpringBoot简介 SpringBoot开发步骤 SpringBoot配置文件 属性配置 YAML格式 YAML读取 多环境配置 配置文件级别 SpringBoot整合junit