01基础篇
02-1运维实用篇(打包与运行、多环境配置、日志)
02-2开发实用篇(热部署、配置、NoSQL、整合第三方技术)
03SpringCache
04SpringSecurity
SpringBoot(B站黑马)学习笔记 01基础篇
注:基础篇在SSM中已经学习了一部分,以下是在此之上的完善补充。相关源码也在SSM章节中的文件夹
基础篇学习目标:
以SpringMvc为例
原生开发SpringMvc需要配置许多的配置文件才能就行开发,springboot帮我们简化了几乎所有的配置。下面就来详细介绍。
tips:初次新建要下载很久,将中央仓库换成阿里镜像仓库更快
2.直接开发controller(config的配置类都不用写了)
3.运行(不用配置Tomcat了,其内置了Tomcat直接运行Application启动类)
Application类
这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication
注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。
pom.xml配置
SpringBoot之所以能够减少如此多的配置,都是源于继承了父工程
我们程序之所以能够开发web工程,就是新建项目时勾选的Spring Web
idea只是工具,帮我们创建SpringBoot工程也是去官网创建的,所以idea创建要确保联网
1.打开Spring官网 https://spring.io/
使用官网https://start.spring.io/ 创建springboot有一大痛点,就是该网站是国外的,访问速度可能很慢有时连接不上。为了解决这一问题我们可以通过阿里云https://start.aliyun.com创建,这个速度相当快 几乎不需要等
springboot工程创建后会发现出现很多未知的文件,我们用不上,看着也占位置。解决这个问题有两种方式,1.直接delete删除(对项目足够了解,否则容易出问题)。2.使用 idea的设置隐藏
使用idea设置隐藏
找到
1.File -> Settings
2.Editor -> File Types -> Ignored Files and Folders
3.输入要隐藏的名称,支持 * 通配符
4.确认
SpringBoot
是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。
Spring程序缺点
SpringBoo程序优点
我们使用 Spring Initializr
方式创建的 Maven
工程的的 pom.xml
配置文件中自动生成了很多包含 starter
的依赖,如下图
这些依赖就是起步依赖
探索父工程
从上面的文件中可以看到指定了一个父工程,我们进入到父工程,发现父工程中又指定了一个父工程,如下图所示
再进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示
上图中的 properties
标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties
中我们找 servlet
和 mysql
的版本如下图
dependencyManagement
标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupid
和 artifactId
不需要定义 version
。选好springboot的版本,如果我们需要哪个依赖直接引用G A 即可,它帮我们匹配好了最佳兼容的V(版本),避免了依赖冲突
看完了父工程中 pom.xml
的配置后不难理解我们工程的的依赖为什么都没有配置 version
。
探索依赖
进入到该依赖,查看 pom.xml
的依赖会发现它引入了如下的依赖
里面的引入了 spring-web
和 spring-webmvc
的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC
中的注解的原因。
而依赖 spring-boot-starter-tomcat
,从名字基本能确认内部依赖了 tomcat
,所以我们的工程才能正常启动。
结论:以后需要使用技术,只需要引入该技术对应的起步依赖即可
场景:我们在学习过程中会创建很多工程,学习一个新内容想要用前一个工程的内容就要重新创建工程然后一个个复制,太麻烦了。整个文件改名复制又会存在原始工程的痕迹影响开发。
原则:
比如:我们想要一个工程作为统一的模板,以后都用这个模板的内容新建工程
3.修改pom.xml
将其名称修改成文件夹名称 就是工程的项目名称 (注意:小心不要改到父工程的)
至此我们的模板就新建好了
在idea中打开新工程(导入模块也行,直接打开也行 看个人需要)
打开后会发现两个问题:
问题一:maven模块名称用的还是原始的,原因是我们没有修改,标签内的名称决定它的maven模块名称。修改成项目名称也行,直接删除也行。直接删除就使用项目名称作为maven模块名称。
当然创建模块的时候直接删除也行 标签也行,目前来说这两个标签无作用
小细节:模板文件统一命名Application就不用修改这里了
注意:上述只是用于模板创建,如果很多工程都用到同样的起始内容就适用于。如果只是复制单个工程就没必要创建模板了,直接复制要复制的工程删除多余文件保留src和pom.xml文件,然后修改pom.xml文件就行.
总结:
application.yml文件(主要写这种)
补充:输入没有弹出提示解决
配置文件输入相关字符会弹出快捷输入提示,但当springboot未识别到就不会。识别成功文件前是绿叶logo
yaml语法规则
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔符)
#表示注释
核心规则:数据前面要加空格与冒号隔开
读取属性
方式二:使用Environment对象对读取
方式一如果读取属性很多的话,要写的@Value就太多了。自动注入Environment对象就可以加载所有的环境信息,将所有的yaml信息交给这个对象(注意是springframework包下)
SpringBoot整合JUnit
测试
只用@SpringBootTest注解就能代替原先的两个注解
==注意:==这里的引导类所在包必须是测试类所在包及其子包。
例如:
* 引导类所在包是 com.itheima
* 测试类所在包是 com.itheima
如果不满足这个要求的话,就需要在使用 @SpringBootTest
注解时,使用 classes
属性指定引导类的字节码对象。如 @SpringBootTest(classes = Springboot07TestApplication.class)
环境准备
测试
测试报错,说没有加载上BookDao这个bean。就是我们没有告知它dao写在哪里
2.告知dao层接口
补充:
现在用的是默认内置Hikari数据源,可以更改为阿里巴巴的druid数据源。druid也有专门整合springboot的在之后介绍
注意:
参考: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层接口
2.导入上节ssm整合的表现层、业务层、数据层等代码 删掉配置类
3.整合Mybatis
5.前后端联调
05MyBatisPlus
druid和druid-spring-boot-starter的区别
1.新建工程,选择起步依赖
由于idea没有收录druid的起步依赖所以新建后手动导入springboot整合druid的起步依赖
2.导入springboot整合druid的起步依赖
maven中央仓库搜索druid,选择专门整合springboot的。一般选择较多人使用的
3.配置数据源信息,类型改为使用druid的。不然用的还得默认数据源
两种配法
通用配法不是正规的整合型配法,也能用
第二种:整合型配法
这是druid整合以后专用的配置了,不可能其它数据源用druid: 这个名称了。 两种配法都能使用,推荐下面的
4.测试
其实就算不用前面两种配发也是使用alibaba.druid数据源,因为我们把依赖引进去后springboot就自动配置了。只有我们把依赖整个去掉就会使用默认内置数据源Kikari
该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)