入门案例
开发步骤
第一步
-
创建模块
选择Spring Initializr
JDK选择1.8
第二步
-
springboot版本如果3.0以上的,将不支持jdk8,就算选了jdk8也没用
-
Name随便起
-
一定要注意Java版本 ,因为前面JDK选的是 1.8.0 ,所以这里一定要选择8
第三步
-
选择版本小的 ,这里选择2.5.0 ,但是发现没有 ,先不用管 ,到后面pom文件里面再改 ,现在先选一个小的 ,也就是不是3开头的
-
选择Web的SpringWeb
创建成功
开启运行
-
编写controller
-
点击运行Application
-
在postman中测试 ,注意端口号
修改pom
-
pom中我们可以把name和description删掉 ,没用
入门案例解释
-
整个工程其实就是pom中两个东西帮我们干活 ,一个parent一个web
开发步骤总结
修改springboot版本方法
-
在pom中找到parent标签 ,修改version ,可以修改springboot的版本
官网开发
-
进入官网 ,找到Projects->SpringBoot
-
找到QuickStart
-
点击Generate
-
下载压缩包
-
里面的配置和自己创建的一模一样
-
所以这也是为什么创建springboot工程要联网 ,走的是Spring的页面
快速启动
步骤
-
前端人员要想调试代码 ,还需要连接后端的服务器 ,但是为了避免这个麻烦 ,后端人员可以直接把打包好的jar包发送给前端 ,然后让前后端一起连接数据库就好
-
点击Maven里面的lifecycle里面的package包 ,把项目进行打包
-
target文件夹里面找到jar包
-
open in explore
-
然后把jar包发给前端 ,文件放在前端那个文件夹 ,就在那个文件夹敲个cmd ,然后打个 java -jar s(点个Tab就补全了)
-
回车 ,项目启动完成
-
postman测试
总结
-
注意 : 任何的Maven程序都可以执行Package指令 ,也可以打出jar包 ,但是以前使用Maven工程打出的jar包不能直接使用Java -jar指令执行 ,但是我们boot程序就可以使用这个指令去执行 ,其实就是依赖上面的插件 ,这个插件不止把程序打成jar包 ,还把其他程序要用的jar包也打到这个jar包里面了 ,并且这个打的jar包还设置了一个入口程序 ,如果不设置 ,那么程序无法知道从哪里运行 ,这一切都依赖于上面的插件
简介
-
Springboot后台已经做好了版本控制 ,我们只需要在pom文件中 ,告诉boot需要哪些包就可以了 ,版本号不需要我们指定 ,boot会在后台自动匹配添加的依赖的版本号
起步依赖
-
做程序 ,想要什么技术 ,只要把对应的起步依赖 ,也就是那些名字里带test的加上就好了 ,里面所有的东西已经配好了
-
以后到企业里面用springboot ,不是要用最新的 ,而是项目组确认要用spring5.2.10这个版本 ,就去查5.2.10对应的版本boot是几 ,然后就用那个版本就可以 ,以后做项目都用的是最合理的版本
辅助功能
-
在下图的依赖中 ,在web的start中引入了Tomcat的start ,就可以让我们的程序内置tomcat服务器
上面pom中的start-web中有start-tomcat
切换技术
-
如果不想用tomcat技术 ,想要用jetty服务器 ,那么我们可以采用排除依赖的方式 ,(而不是可选依赖) ,
-
在pom中找到start-web ,在这个起步依赖下面加上一段exclusions ,把内置的tomcat给排除了(这个Tomcat在点进去start-web的里面) ,然后
-
然后在这段以来下面加上一个jetty的依赖 ,注解复制上面的内容就好 ,把后面的Tomcat改成jetty
-
我们发现照样可以启动
-
上述总结
-
程序运行的时候就是靠引导类去运行 ,以后开发的时候 ,运行找引导类 ,换技术 ,加技术就加start ,就可以搞定
基础配置
配置文件中的信息很少有双引号或者单引号
配置文件格式(三种)
properties
-
找到文件 ,添加内容port = 80
-
postman
-
可以发现链接可以直接改成localhost ,不用再加:端口号了
-
yml(主流)
-
boot中的配置类我们一般都写application..
-
注意前面一定要有空格
yaml
-
是yml的另一种格式
总结
-
如果三个配置文件都配上 ,那么优先级properties>yml>yaml
-
(自动提示功能(敲一个port就能自动弹出剩余提示)消失解决方案)如果添加了配置文件 ,但是IDEA不认 ,那么我们可以手动加配置文件 ,按照下图顺序就可以
-
以后配置主要选择yml方式
-
比如增加一个日志
-
配置根路径对应的级别为warn ,那就是只看warn的信息 ,我们一般默认是info级别
-
yaml
配置
-
最主要最主要的就是那个空格 ,下一级的空格一定比上一级要多
-
如果一个属性对应多个值 ,那么就是数组格式
-
yaml数组数据
数据读取方式(三种)
-
配置文件
第一种
-
如果想要读取某一个属性 ,直接使用名称就可以读取
第二种
-
自动装配
-
图中的Enviroment是springframework这个包里面自带的类
第三种
-
Bean
先定义为一个Bean ,受Spring控制
告诉程序从当前配置中读属性 ,前缀就指的是属性的前缀
-
这种配置方法的应用之处 ,在后期配myBatis的时候 ,在配置文件中也会有像enterprise的信息 ,配上之后 在MyBatis框架内会定义一个这样的类然后把信息加载走 ,然后在框架内部 ,它就可以通过某个对象把信息得到
-
所以以后在配置yaml的时候 ,有些信息一定要按照人家的格式来 ,不然就没法用
-
下图 ,因为已经是一个Bean了 ,使用自动装配就可以把这个类加载进来
多环境开发
多环境开发配置
-
如何在上线的时候配置多环境 ,同时在多环境中任意切换使用
第一种 : 过时写法(常用)
注意三条短杠的书写
第二种 : 不过时写法
注意三条短线把他们分开
第三种 : properties文件 ,这种格式在于 ,不同的端口要创建不同的文件 ,相较于第一种还是比较麻烦
多环境命令行启动参数
-
打包前执行一下clean ,排除上一次运行对新一次运行的影响
-
另外打包的时候 ,配置文件里面有中文会打包失败 ,我们需要设置一下 ,把Project Encoding改一下 ,改成UTF-8
-
下面的properties也改成UTF-8
-
有多个配置文件 ,记得把另外的备份一下 ,把另外的文件放到bak文件夹里面 ,实际开发的时候一般只会用其中一种配置文件格式
-
改完之后看一下配置文件是不是乱码 ,是乱码修复之后再打包
-
打包
-
运行 ctr -c就可以停下来
-
修改环境
-
下面的这些就是命令行参数 ,注意前面有两个-
-
修改好多参数
-
下图展示修改dev的端口号
-
官网文件优先级解释
多环境开发兼容问题
-
具体操作见ssm 第100集
-
Maven和SpringBoot中都有多环境开发 ,如果两个都配置了多环境 ,那么应该以谁为主呢 ,也就是如果Maven中配的是以开发为主 ,boot中配的是以测试为主 ,那究竟启动那个 ,我们记得 ,在开启的时候 ,是在命令行中运行jar包 ,而且打包的时候 ,用的是Maven的指令 ,所以就是说以maven为主
-
接下来让Maven控制版本 ,让boot加载Maven中设置的版本
配置文件分类
(一)
-
由于配置文件太多 ,每次服务器启动都要加很多配置 ,而且还容易写错 ,所以需要找个简单的方式 ,在boot中提供有多级配置文件 ,再这样的设定中就可以解决这个问题
-
config包里面的配置文件会覆盖掉外面的配置文件进行生效 ,也就是config包里面的配置文件优先级比较高
-
应用场景 :
-
项目经理已经把配置文件搞好了 ,并且把配置文件配到了config包里 ,但是自己写的时候要根据当前本机情况进行开发 ,自己就在外面的Application里面写 ,等到写完了 ,上线之前把这个项目经理发的配置文件一配就好了 ,改bug的时候把项目经理的配置文件一删 ,继续在外面这个application里配
-
(二)
-
如果想要重新配端口 ,只要在jar包所在目录里面重新放一个新的配置文件 ,这样这个新的配置文件就生效了 ,而且覆盖工程中那两个配置文件
新编辑的yml文件
jar包所在文件夹
开启服务器 ,发现这里的端口号是82 ,覆盖了工程中的其他配置文件的端口设置
(三)
-
在jar包所在目录也可以再创建一个config目录 ,里面新建一个application.yml
-
配置端口
-
启动服务器
-
说明这里的config包下面的yml文件的优先级还要高
整合
SpringBoot整合Junit
-
案例
-
首先创建一个Junit模块
这个模块不用web也可以
-
首先 : service
service接口
接口实现类
标注@Service定义成Bean
-
其次 : 测试类
-
依赖注入
-
测试成功
-
在Java文件中 ,有一个引导类 ,这个类就起到了配置文件的作用 ,这个类在什么位置 ,它就会把他所在的包和他的子包全部扫描一遍 ,所以我们在BookServiceImpl中写的@Service才能加载成Bean
-
现在的测试类会默认加载引导类 ,其实就是初始化Spring的环境 ,如果不在这个com.itheima包里 ,就找不到引导类了 ,那么测试类就无法正常运行
下图中我们可以看到测试类和引导类其实在一个包里
-
如果我们非要设置在不同的包里面测试呢 ,就需要在测试类的注解里面指定包名
测试类在itheima1 ,引导类在itheima
-
总结
SpringBoot整合SSM
-
其实就剩下整合MyBatis了 ,因为前两个整合SpringMvc已经帮我们做好了
-
Spring整合MyBatis复习
-
开始整合
第一步创建模块 ,添加myBatis的起步依赖
第二步 : 配置yml配置文件
第三步 : 书写实现类
dao.BookDao
-
注意头上的@Mapper ,因为要实现这个类的自动代理 ,Spring怎么知道这个类需要自动代理呢 ,原来我们自动代码里的时候 ,Spring需要扫描这个类 ,现在我们做自动代理就只需要在这个类上加一个@Mapper注解
domain.Book
总结两步走
-
配置yml配置类
-
给Dao层加上@Mapper注解
拓展 : 如果想要用Druid连接池 ,可以在pom文件和yml配置文件里面加上
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency>
报错 : 如果boot版本是 2.4.2 ,那么可能会报时区异常的错
解决办法
整合MyBatis总结
-
最重要的两个地方 : 1.加@Mappper 2.boot版本在2.4.2之前的要配置时区ServerTimeZone=UTC
SpringBoot整合SSM案例
准备工作
-
创建模块 ,这个时候需要勾选三个地方 一个是Web的 ,一个是Sql的
-
导入之前的项目文件
-
TODO : 在哪里都可以用 ,主要用于备忘录 ,凡是配过的地方都会显示
-
下图就是我们修改的三个地方
-
添加druid连接池依赖 druid 1.1.16
-
在Dao层接口上面配置@Mapper
-
在yml里面配置端口80 和连接数据库的相关信息
放置页面
-
我们旧的项目里面 ,是把页面放在webapp下面 ,但是现在在boot的项目里面 ,我们放在static目录下面 ,静态就是放我们的静态资源
旧
新
-
运行引导类 ,起服务器
-
加一个页面 index.html