【SpringBoot学习】01基础篇

SpringBoot(B站黑马)学习笔记

01基础篇
02-1运维实用篇(打包与运行、多环境配置、日志)
02-2开发实用篇(热部署、配置、NoSQL、整合第三方技术)
03SpringCache
04SpringSecurity


文章目录

  • SpringBoot(B站黑马)学习笔记
  • 前言
  • 01基础篇
  • SpringBoot简介
    • SpringBoot工程创建
      • idea联网创建版
      • Spring官网创建版
      • 阿里云创建版
      • idea小技巧——在Idea中隐藏指定文件/文件夹
    • SpringBoot概述
    • 起步依赖
      • 起步依赖
      • 辅助功能——切换web服务器
  • 基础配置
    • idea小技巧——复制工程
    • 配置文件格式(3种)
    • yaml
      • yaml格式
      • yaml数据读取方式(3种)
  • SpringBoot整合
    • SpringBoot整合JUnit
    • SpringBoot整合Mybatis
    • SpringBoot整合SSM
    • SpringBoot整合MyBatisPlus
    • SpringBoot整合Druid
  • 注:


前言

SpringBoot(B站黑马)学习笔记 01基础篇


01基础篇

注:基础篇在SSM中已经学习了一部分,以下是在此之上的完善补充。相关源码也在SSM章节中的文件夹

基础篇学习目标:

  • 能够创建SpringBoot工程
  • 基于SpringBoot实现ssm整合

SpringBoot简介

SpringBoot工程创建

以SpringMvc为例

  • 原生开发SpringMvc过程
【SpringBoot学习】01基础篇_第1张图片

原生开发SpringMvc需要配置许多的配置文件才能就行开发,springboot帮我们简化了几乎所有的配置。下面就来详细介绍。

idea联网创建版

【SpringBoot学习】01基础篇_第2张图片【SpringBoot学习】01基础篇_第3张图片
【SpringBoot学习】01基础篇_第4张图片
【SpringBoot学习】01基础篇_第5张图片

1.创建SpringBoot工程
【SpringBoot学习】01基础篇_第6张图片
【SpringBoot学习】01基础篇_第7张图片

tips:初次新建要下载很久,将中央仓库换成阿里镜像仓库更快

2.直接开发controller(config的配置类都不用写了)
【SpringBoot学习】01基础篇_第8张图片

3.运行(不用配置Tomcat了,其内置了Tomcat直接运行Application启动类)
【SpringBoot学习】01基础篇_第9张图片

成功访问
【SpringBoot学习】01基础篇_第10张图片

  • 最简SpringBoot程序所包含的基础文件
  • Application类
  • pom.xml文件

Application类
这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication 注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。
【SpringBoot学习】01基础篇_第11张图片

pom.xml配置

SpringBoot之所以能够减少如此多的配置,都是源于继承了父工程

我们程序之所以能够开发web工程,就是新建项目时勾选的Spring Web
【SpringBoot学习】01基础篇_第12张图片

Spring官网创建版

idea只是工具,帮我们创建SpringBoot工程也是去官网创建的,所以idea创建要确保联网
【SpringBoot学习】01基础篇_第13张图片

1.打开Spring官网 https://spring.io/
【SpringBoot学习】01基础篇_第14张图片
【SpringBoot学习】01基础篇_第15张图片

跟idea里的一样
【SpringBoot学习】01基础篇_第16张图片

生成后会打成压缩包,其内容和idea创建的一模一样

【SpringBoot学习】01基础篇_第17张图片

阿里云创建版

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

使用官网https://start.spring.io/ 创建springboot有一大痛点,就是该网站是国外的,访问速度可能很慢有时连接不上。为了解决这一问题我们可以通过阿里云https://start.aliyun.com创建,这个速度相当快 几乎不需要等

1.更换idea创建网址
【SpringBoot学习】01基础篇_第18张图片

剩下的都一样
【SpringBoot学习】01基础篇_第19张图片

idea小技巧——在Idea中隐藏指定文件/文件夹

springboot工程创建后会发现出现很多未知的文件,我们用不上,看着也占位置。解决这个问题有两种方式,1.直接delete删除(对项目足够了解,否则容易出问题)。2.使用 idea的设置隐藏

使用idea设置隐藏

找到
1.File -> Settings
2.Editor -> File Types -> Ignored Files and Folders
3.输入要隐藏的名称,支持 * 通配符
4.确认

注:不同版本的idea看到的界面不同,注意观察
【SpringBoot学习】01基础篇_第20张图片

SpringBoot概述

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

  • Spring程序缺点

    • 配置繁琐
    • 依赖设置繁琐
  • SpringBoo程序优点

    • 自动配置
    • 起步依赖(简化依赖配置)
    • 辅助功能(内置服务器,…)

Spring程序与SpringBoot程序对比
【SpringBoot学习】01基础篇_第21张图片
【SpringBoot学习】01基础篇_第22张图片

起步依赖

起步依赖

我们使用 Spring Initializr 方式创建的 Maven 工程的的 pom.xml 配置文件中自动生成了很多包含 starter 的依赖,如下图
【SpringBoot学习】01基础篇_第23张图片

这些依赖就是起步依赖

探索父工程

从上面的文件中可以看到指定了一个父工程,我们进入到父工程,发现父工程中又指定了一个父工程,如下图所示
【SpringBoot学习】01基础篇_第24张图片

再进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示
【SpringBoot学习】01基础篇_第25张图片

上图中的 properties 标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties 中我们找 servletmysql 的版本如下图

dependencyManagement 标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupidartifactId 不需要定义 version。选好springboot的版本,如果我们需要哪个依赖直接引用G A 即可,它帮我们匹配好了最佳兼容的V(版本),避免了依赖冲突

build 标签中也对插件的版本进行了锁定,如下图
【SpringBoot学习】01基础篇_第26张图片

看完了父工程中 pom.xml 的配置后不难理解我们工程的的依赖为什么都没有配置 version

探索依赖

在我们创建的工程中的 pom.xml 中配置了如下依赖
【SpringBoot学习】01基础篇_第27张图片

进入到该依赖,查看 pom.xml 的依赖会发现它引入了如下的依赖
【SpringBoot学习】01基础篇_第28张图片

里面的引入了 spring-webspring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因。

而依赖 spring-boot-starter-tomcat ,从名字基本能确认内部依赖了 tomcat,所以我们的工程才能正常启动。

结论:以后需要使用技术,只需要引入该技术对应的起步依赖即可

【SpringBoot学习】01基础篇_第29张图片【SpringBoot学习】01基础篇_第30张图片
【SpringBoot学习】01基础篇_第31张图片
【SpringBoot学习】01基础篇_第32张图片

辅助功能——切换web服务器

【SpringBoot学习】01基础篇_第33张图片

1.先排除tomcat服务器
【SpringBoot学习】01基础篇_第34张图片

2.更换jetty服务器
【SpringBoot学习】01基础篇_第35张图片

测试
【SpringBoot学习】01基础篇_第36张图片

基础配置

idea小技巧——复制工程

场景:我们在学习过程中会创建很多工程,学习一个新内容想要用前一个工程的内容就要重新创建工程然后一个个复制,太麻烦了。整个文件改名复制又会存在原始工程的痕迹影响开发。

原则:

  • 保留工程基础结构
  • 抹除原始工程痕迹

比如:我们想要一个工程作为统一的模板,以后都用这个模板的内容新建工程

1.拿入门案例举例 先复制一个副本作为模板
【SpringBoot学习】01基础篇_第37张图片

2.打开模板,将多余内容删除只留下src和pom.xml
【SpringBoot学习】01基础篇_第38张图片

3.修改pom.xml

将其名称修改成文件夹名称 就是工程的项目名称 (注意:小心不要改到父工程的)
【SpringBoot学习】01基础篇_第39张图片

至此我们的模板就新建好了

利用模板重复上面的操作 就能得到一个新工程
【SpringBoot学习】01基础篇_第40张图片
【SpringBoot学习】01基础篇_第41张图片

在idea中打开新工程(导入模块也行,直接打开也行 看个人需要)

打开工程
【SpringBoot学习】01基础篇_第42张图片

打开后会发现两个问题:

问题一:maven模块名称用的还是原始的,原因是我们没有修改,标签内的名称决定它的maven模块名称。修改成项目名称也行,直接删除也行。直接删除就使用项目名称作为maven模块名称。

当然创建模块的时候直接删除也行 标签也行,目前来说这两个标签无作用
【SpringBoot学习】01基础篇_第43张图片
【SpringBoot学习】01基础篇_第44张图片

问题二:启动类的名称用到也是原始的。直接Rename就行
【SpringBoot学习】01基础篇_第45张图片
【SpringBoot学习】01基础篇_第46张图片

右上角启动有的话也顺便修改
【SpringBoot学习】01基础篇_第47张图片

小细节:模板文件统一命名Application就不用修改这里了

注意:上述只是用于模板创建,如果很多工程都用到同样的起始内容就适用于。如果只是复制单个工程就没必要创建模板了,直接复制要复制的工程删除多余文件保留src和pom.xml文件,然后修改pom.xml文件就行.

总结:

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

配置文件格式(3种)

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

【SpringBoot学习】01基础篇_第48张图片【SpringBoot学习】01基础篇_第49张图片
【SpringBoot学习】01基础篇_第50张图片

application.properties文件
【SpringBoot学习】01基础篇_第51张图片

application.yml文件(主要写这种)

使用回车间隔分级,数据前要加空格
【SpringBoot学习】01基础篇_第52张图片

application.yaml文件 写法跟yml一样
【SpringBoot学习】01基础篇_第53张图片

补充:输入没有弹出提示解决

配置文件输入相关字符会弹出快捷输入提示,但当springboot未识别到就不会。识别成功文件前是绿叶logo
【SpringBoot学习】01基础篇_第54张图片

解决办法
【SpringBoot学习】01基础篇_第55张图片
【SpringBoot学习】01基础篇_第56张图片

yaml

yaml格式

【SpringBoot学习】01基础篇_第57张图片

yaml语法规则

  • 大小写敏感

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

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

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

  • #表示注释

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

【SpringBoot学习】01基础篇_第58张图片

yaml数据读取方式(3种)

【SpringBoot学习】01基础篇_第59张图片【SpringBoot学习】01基础篇_第60张图片
【SpringBoot学习】01基础篇_第61张图片
【SpringBoot学习】01基础篇_第62张图片

环境准备
【SpringBoot学习】01基础篇_第63张图片

读取属性

方法一:简单类型依赖注入@Value
【SpringBoot学习】01基础篇_第64张图片

方式二:使用Environment对象对读取

方式一如果读取属性很多的话,要写的@Value就太多了。自动注入Environment对象就可以加载所有的环境信息,将所有的yaml信息交给这个对象(注意是springframework包下)
【SpringBoot学习】01基础篇_第65张图片

方式三:使用实体类读取
【SpringBoot学习】01基础篇_第66张图片
【SpringBoot学习】01基础篇_第67张图片
【SpringBoot学习】01基础篇_第68张图片

SpringBoot整合

SpringBoot整合JUnit

【SpringBoot学习】01基础篇_第69张图片

SpringBoot整合JUnit

环境准备
【SpringBoot学习】01基础篇_第70张图片

测试

只用@SpringBootTest注解就能代替原先的两个注解
【SpringBoot学习】01基础篇_第71张图片

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

例如:

* 引导类所在包是 com.itheima

* 测试类所在包是 com.itheima

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

SpringBoot整合Mybatis

【SpringBoot学习】01基础篇_第72张图片

springboot整合Mybatis需要配置的就两个
【SpringBoot学习】01基础篇_第73张图片

springboot整合Mybatis
【SpringBoot学习】01基础篇_第74张图片
【SpringBoot学习】01基础篇_第75张图片
【SpringBoot学习】01基础篇_第76张图片
【SpringBoot学习】01基础篇_第77张图片

环境准备

勾选Mybatis相关的起步依赖
【SpringBoot学习】01基础篇_第78张图片
【SpringBoot学习】01基础篇_第79张图片

1.配置数据源信息
【SpringBoot学习】01基础篇_第80张图片

测试

测试报错,说没有加载上BookDao这个bean。就是我们没有告知它dao写在哪里
【SpringBoot学习】01基础篇_第81张图片

就是spring整合mybatis定义映射配置没有告知
【SpringBoot学习】01基础篇_第82张图片

2.告知dao层接口

通过注解告知
【SpringBoot学习】01基础篇_第83张图片

测试
【SpringBoot学习】01基础篇_第84张图片

补充:

现在用的是默认内置Hikari数据源,可以更改为阿里巴巴的druid数据源。druid也有专门整合springboot的在之后介绍
【SpringBoot学习】01基础篇_第85张图片

使用xml映射文件
【SpringBoot学习】01基础篇_第86张图片

注意:

  • resources下创建包时一次性建包用 ’ / ’ 区分,Directory包用 ’ / ’ 区分,package包用 ’ . ’ 区分
  • xml映射文件跟接口放一起和在resources包下不是同一个目录要添加另外的配置,详细参考下方网址

参考:springboot整合mybatis接口文件与映射文件的放置

​ springboot中配置mybatis别名该怎么写?

​ @Mapper和@MapperScan

【SpringBoot学习】01基础篇_第87张图片

起类型别名:原生写法是在mybatis.config中使用标签,springboot整合mybatis写在yml配置文件中。但是添加后可以正常运行但返回类型会报错,应该是idea的bug
【SpringBoot学习】01基础篇_第88张图片

解决办法,yml添加配置后输入全限定名运行一遍再把前面的删掉留Book就不会了(启动扫描yml文件才生效)

1.@Mapper注解

作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类

添加位置:接口类上面

@Mapper
public interface UserDAO {
   //代码
}

如果想要每个接口都要变成实现类,那么需要在每个接口类上加上@Mapper注解,比较麻烦,解决这个问题用@MapperScan

2.@MapperScan注解

作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类

添加位置:是在Springboot启动类上面添加,

@SpringBootApplication
@MapperScan("com.gdit.dao")
public class SpringbootMybatisDemoApplication {
    public static void main(String[] args) {
            SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
    }
}

添加@MapperScan(“com.gdit.dao”)注解以后,com.gdit.dao包下面的接口类,在编译之后都会生成相应的实现类

多个包可采用数组的形式,支持通配符

总结:springboot整合mybatis只需三步,导入起步依赖->配置数据源信息->告知dao层接口

SpringBoot整合SSM

【SpringBoot学习】01基础篇_第89张图片【SpringBoot学习】01基础篇_第90张图片

1.创建springboot工程
【SpringBoot学习】01基础篇_第91张图片

【SpringBoot学习】01基础篇_第92张图片

2.导入上节ssm整合的表现层、业务层、数据层等代码 删掉配置类
【SpringBoot学习】01基础篇_第93张图片

3.整合Mybatis

更改默认数据源->添加@Mapper注解->配置数据源信息
【SpringBoot学习】01基础篇_第94张图片
【SpringBoot学习】01基础篇_第95张图片

4.测试
【SpringBoot学习】01基础篇_第96张图片
【SpringBoot学习】01基础篇_第97张图片

5.前后端联调

引入前端功能页面,放在resources下static包下
【SpringBoot学习】01基础篇_第98张图片

如果第一次运行出错可以执行clean命令后再运行一遍
【SpringBoot学习】01基础篇_第99张图片

SpringBoot整合MyBatisPlus

05MyBatisPlus

SpringBoot整合Druid

druid和druid-spring-boot-starter的区别

  • 作用是一样的,都是连接池提供连接,里面的配置参数都是一样的
  • druid-spring-boot-starter只是在druid基础上进行了一次封装,专门用来整合springboot项目

【SpringBoot学习】01基础篇_第100张图片【SpringBoot学习】01基础篇_第101张图片

1.新建工程,选择起步依赖

由于idea没有收录druid的起步依赖所以新建后手动导入springboot整合druid的起步依赖
【SpringBoot学习】01基础篇_第102张图片

2.导入springboot整合druid的起步依赖

maven中央仓库搜索druid,选择专门整合springboot的。一般选择较多人使用的
【SpringBoot学习】01基础篇_第103张图片
【SpringBoot学习】01基础篇_第104张图片

3.配置数据源信息,类型改为使用druid的。不然用的还得默认数据源

两种配法

第一种:通用配法
【SpringBoot学习】01基础篇_第105张图片

通用配法不是正规的整合型配法,也能用

第二种:整合型配法

这是druid整合以后专用的配置了,不可能其它数据源用druid: 这个名称了。 两种配法都能使用,推荐下面的
【SpringBoot学习】01基础篇_第106张图片

4.测试

其实就算不用前面两种配发也是使用alibaba.druid数据源,因为我们把依赖引进去后springboot就自动配置了。只有我们把依赖整个去掉就会使用默认内置数据源Kikari
【SpringBoot学习】01基础篇_第107张图片


注:

该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)

你可能感兴趣的:(SpringBoot学习,spring,boot,学习,后端)