概述
SSM(B站黑马)学习笔记
01-1-Spring概述
01-2-Spring IOC
01-3-Spring AOP
01-4-Spring 事务
02-SpringMVC
03-SSM整合
04-Maven高级
05-SpringBoot
06-MyBatisPlus
文章目录
- SSM(B站黑马)学习笔记
- 前言
- 04SpringBoot
- SpringBoot简介
- 入门案例
- SpringBoot开发入门程序
- Spring程序与SpringBoot程序对比
- 在Spring官网创建SpringBoot工程
- SpringBoot程序快速启动
- SpringBoot概述
- 起步依赖
- 起步依赖
- 辅助功能——切换web服务器
- 基础配置
- 配置文件格式(3种)
- yaml
- yaml格式
- yaml数据读取方式(3种)
- 多环境开发
- 多环境开发配置
- 多环境jar包命令行启动参数设置
- 多环境开发兼容问题(maven与springboot)
- 配置文件分类
- SpringBoot整合
- SpringBoot整合JUnit
- SpringBoot整合Mybatis
- SpringBoot整合SSM
- 注:
前言
SSM(B站黑马)学习笔记 04SpringBoot
04SpringBoot
SpringBoot简介
入门案例
以SpringMvc为例
- 原生开发SpringMvc过程
SpringBoot开发入门程序
1.创建SpringBoot工程
初次新建要下载很久,将中央仓库换成阿里镜像仓库更快
2.直接开发controller(config的配置类都不用写了)
3.运行(不用配置Tomcat了,其内置了Tomcat直接运行Application启动类)
成功访问
- 最简SpringBoot程序所包含的基础文件
- Application类
- pom.xml文件
Application类
这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication
注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。
pom.xml配置
SpringBoot之所以能够减少如此多的配置,都是源于继承了父工程
我们程序之所以能够开发web工程,就是新建项目时勾选的Spring Web
Spring程序与SpringBoot程序对比
在Spring官网创建SpringBoot工程
idea只是工具,帮我们创建SpringBoot工程也是去官网创建的,所以idea创建要确保联网
1.打开Spring官网 https://spring.io/
跟idea里的一样
生成后会打成压缩包,其内容和idea创建的一模一样
SpringBoot程序快速启动
前后端分离合作开发存在的问题
我们和前端开发人员协同开发,而前端开发人员需要测试前端程序就需要后端开启服务器,这就受制于后端开发人员。为了摆脱这个受制,前端开发人员尝试着在自己电脑上安装 Tomcat
和 Idea
,在自己电脑上启动后端程序,这显然不现实。
我们后端可以将 SpringBoot
工程打成 jar
包,该 jar
包运行不依赖于 Tomcat
和 Idea
这些工具也可以正常运行,只是这个 jar
包在运行过程中连接和我们自己程序相同的 Mysql
数据库即可。这样就可以解决这个问题,如下图
注意:打jar包maven工程都可以,但不能使用java -jar运行。springboot工程jar包可以是因为依赖了插件,它不仅打包了jar包,还把要用的jar包也一起打了。简单来说就是jar包里还有jar包
1.打jar包 执行maven中的package命令
2.启动SpringBoot
在jar包所在文件目录运行cmd 输入java -jar jar包名(输入前几个字母按Tab自动补充)
Ctrl+C停止运行
测试
SpringBoot概述
-
SpringBoot
是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。 -
Spring程序缺点
- 配置繁琐
- 依赖设置繁琐
-
SpringBoo程序优点
- 自动配置
- 起步依赖(简化依赖配置)
- 辅助功能(内置服务器,…)
起步依赖
起步依赖
我们使用 Spring Initializr
方式创建的 Maven
工程的的 pom.xml
配置文件中自动生成了很多包含 starter
的依赖,如下图
这些依赖就是起步依赖
探索父工程
从上面的文件中可以看到指定了一个父工程,我们进入到父工程,发现父工程中又指定了一个父工程,如下图所示
再进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示
上图中的 properties
标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties
中我们找 servlet
和 mysql
的版本如下图
dependencyManagement
标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupid
和 artifactId
不需要定义 version
。选好springboot的版本,如果我们需要哪个依赖直接引用G A 即可,它帮我们匹配好了最佳兼容的V(版本),避免了依赖冲突
而 build
标签中也对插件的版本进行了锁定,如下图
看完了父工程中 pom.xml
的配置后不难理解我们工程的的依赖为什么都没有配置 version
。
探索依赖
在我们创建的工程中的 pom.xml
中配置了如下依赖
进入到该依赖,查看 pom.xml
的依赖会发现它引入了如下的依赖
里面的引入了 spring-web
和 spring-webmvc
的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC
中的注解的原因。
而依赖 spring-boot-starter-tomcat
,从名字基本能确认内部依赖了 tomcat
,所以我们的工程才能正常启动。
结论:以后需要使用技术,只需要引入该技术对应的起步依赖即可
辅助功能——切换web服务器
1.先排除tomcat服务器
2.更换jetty服务器
测试
基础配置
配置文件格式(3种)
- SpringBoot提供了多种属性配置方式
application.properties文件
application.yml文件(主要写这种)
使用回车间隔分级,数据前要加空格
application.yaml文件 写法跟yml一样
补充:输入没有弹出提示解决
配置文件输入相关字符会弹出快捷输入提示,但当springboot未识别到就不会。识别成功文件前是绿叶logo
解决办法
yaml
yaml格式
yaml语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔符)
- #表示注释
- 核心规则:数据前面要加空格与冒号隔开
yaml数据读取方式(3种)
环境准备
读取属性
方法一:简单类型依赖注入@Value
方式二:使用Environment对象对读取
方式一如果读取属性很多的话,要写的@Value就太多了。自动注入Environment对象就可以加载所有的环境信息,将所有的yaml信息交给这个对象(注意是springframework包下)
方式三:使用实体类读取
多环境开发
多环境开发配置
以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql
,连接自己电脑上的 mysql
即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。
来回的修改配置会很麻烦,而 SpringBoot
给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。
环境准备
yaml设置多环境
补充:下图设置环境名称左边划线是过时写法,两种写法都可以看选择
application.properties设置多环境
注意文件夹命名
多环境jar包命令行启动参数设置
问题:当我们把程序打成jar包给测试,测试要换成测试环境,但我们在配置文件里已经写好了。
解决:通过命令启动更改配置
温馨提醒:
1.打jar包前建议执行clean指令再执行package打jar包指令,因为如果上一次的结果影响本次的操作会出现不必要的麻烦。
2.我们的配置文件中有可能写中文(注释),这种情况打包失败的,需要更改设置
打包
直接启动会发现用的配置文件设定端口
命令行切换配置
命令:java -jar spring.jar --spring.profiles.active=test(配置文件中环境名称)
存在问题:如果测试的82端口占用了,更改后无法正常启动
命令行切换多环境配置端口
命令:
java -jar spring.jar --spring.profiles.active=test --server.port=88(将test环境端口切换为88)
java -jar spring.jar --server.port=88(只切换端口)
参数加载优先级
之所以能够使用命令行更改配置是因为它的优先级比配置文件高,官网有优先级介绍,从上往下逐步提高
参考网址:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config
多环境开发兼容问题(maven与springboot)
在maven和springboot中都可以配置多环境03Maven高级,如果maven配置开发环境为主,boot配置测试环境为主,但用谁的呢。解决这个问题我们要知道,最终boot工程不是在电脑上使用idea启动,而是使用jar包在服务器用命令行(java -jar)的方式启动。jar包又是maven执行package指令打包,所以maven里的多环境配置是起主导作用的,而boot里的多环境配置仅仅相当于maven打包过程中的工具应该听从maven的控制。
解决兼容问题就是让maven控版本,springboot加载maven中设置的版本
环境准备
1.application.yml读取pom.xml设置
注意,pom.xml中配置的属性只能在当前文件生效,要扩展范围需要配置插件
查看application.yml是否读取成功
配置文件分类
有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下
针对这种情况,SpringBoot
定义了配置文件不同放置的位置;而放在不同位置的优先级时不同。
环境准备
4级:classpath:applicattion.yml(直接放在resource包下)
3级:classpath:config/applicattion.yml (resource包下的config包下)
配置文件前的logo前面基础配置有解释
2级:file:applicattion.yml(打包后跟jar包同级目录下)
1级:file:config/applicattion.yml(打包后跟jar包同级目录下config包下)
上述1级和2级就能解决测试环境根据所需配置环境
注意:
SpringBoot 2.5.0版本存在一个bug,我们在使用这个版本时,1级需要在 jar
所在位置的 config
目录下创建一个任意名称的文件夹
SpringBoot整合
SpringBoot整合JUnit
SpringBoot整合JUnit
环境准备
测试
只用@SpringBootTest注解就能代替原先的两个注解
==注意:==这里的引导类所在包必须是测试类所在包及其子包。
例如:
* 引导类所在包是 com.itheima
* 测试类所在包是 com.itheima
如果不满足这个要求的话,就需要在使用 @SpringBootTest
注解时,使用 classes
属性指定引导类的字节码对象。如 @SpringBootTest(classes = Springboot07TestApplication.class)
SpringBoot整合Mybatis
springboot整合Mybatis需要配置的就两个
springboot整合Mybatis
环境准备
勾选Mybatis相关的起步依赖
1.配置数据源信息
测试
测试报错,说没有加载上BookDao这个bean。就是我们没有告知它dao写在哪里
就是spring整合mybatis定义映射配置没有告知
2.告知dao层接口
通过注解告知
测试
补充:
现在用的是默认内置数据源,可以更改为阿里巴巴的druid数据源
使用xml映射文件
注意:resources下创建包时一次性建包用 ’ / ’ 区分,Directory包用 ’ / ’ 区分,package包用 ’ . ’ 区分
xml映射文件跟接口放一起和在resources包下不是同一个目录要添加另外的配置,详细参考下方网址
参考:
springboot整合mybatis接口文件与映射文件的放置
springboot中配置mybatis别名该怎么写?
@Mapper和@MapperScan
起类型别名:原生写法是在mybatis.config中使用标签,springboot整合mybatis写在yml配置文件中。但是添加后可以正常运行但返回类型会报错,应该是idea的bug
解决办法,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
1.创建springboot工程
导入上节ssm整合的表现层、业务层、数据层等代码 删掉配置类
2.整合Mybatis
更改默认数据源->添加@Mapper注解->配置数据源信息
3.测试
4.前后端联调
引入前端功能页面,放在resources下static包下
如果第一次运行出错可以执行clean命令后再运行一遍
注:
该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员2022最新SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术
最后
以上就是开心爆米花为你收集整理的【SSM学习】05-SpringBootSSM(B站黑马)学习笔记前言04SpringBoot注:的全部内容,希望文章能够帮你解决【SSM学习】05-SpringBootSSM(B站黑马)学习笔记前言04SpringBoot注:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复