提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、前言🚀🚀🚀
☀️☀️☀️
我们都是小怪兽,最终会被正义的奥特曼打败 (●—●)
本文简介:本人是大二软件工程专业,java后端方向,学习路线:java基础->JDBC->Maven->MyBatis->SSM->SpirngBoot->Mybatisplus,通过做笔记分享到博客上的形式,激励自己学习,同时方便复习。由于水平为入门级别,如有错误,希望大佬们评论或私信斧正 Thanks♪(・ω・))ノ
二、SpringBoot简介及使用详解:☀️☀️☀️
此篇的学习目标:
2.1 SpringBoot简介
① 入门案例
可以看到这玩意是用来简化Spring程序的!spring干嘛的?致力于让开发者开发变得高效,springboot这哥们很简单,你spring生态理念简化开发, 但是我认为你spring程序做的稍微有点啰嗦,springboot对spring程序做简化!
那么我们原始的springMVC开发程序是怎么样的呢?(回顾一下)
首先:我们要创建一个工程,在pom文件中配上要对应的东西,比如说servlet-api你要用,spring-mvc的资源,
其次:你作为一个web程序,web3.0的配置类不能少吧?咱们现在是不是用的是一个简化开发的格式呀。(如下图:)
再往下来: 你做spring程序,spring的配置类你要不要做?声明是个配置类,然后再写上扫描Controller(这样你就可以配置你的controller),最后这个EnableWebMvc可以带给我们很多功能。
做到这,整个框架只是刚搭建起来,还没有功能。最起码你是不是得提供一个control,也就是我们要提供一个bookController,至少要提供一个方法,然后设上它的映射路径
上述过程就是原生的spring mvc的整个开发过程,那如果我们用springboot来加速它的开发,那应该怎么做呢?请接着往下看:
创建项目
由于我的JDK是8版本,然后由于SpringBoot3.x.x版本的到来,官方称将来17及以上版本将成为主流,但是大多数的项目仍然使用JDK8,所以这里有几个推荐方法:
1.升级JDK版本 ,安装JDK17并配置环境变量,创建项目后将SpringBoot的版本要改为3.0以下,在pom.xml中把java.version修改为1.8。
2.推荐:创建一个新项目,建议选择JDK21,该版本兼容JDK8,可以不用配置JDK21的环境直接创建项目后,修改POM文件中SpringBoot为2.x.x和Java.version为8即可。
3.将https://start.spring.io/或者http://start.springboot.io/替换为 https://start.aliyun.com/
而我的操作就按3的操作来的。
完了后目录结构是这样的:
运行完后,程序已经运行起来了,看到这个spirng图标就知道是springboot。tomcat也自动给你部署好了,如图8080端口号,非常方便。
springboot最重要就是这里的继承。把它删了就啥都没有了。(from黑马视频)
这里第一个springframework.boot就是我们前面勾选的那个web。
然后第二个test,就是搞测试的,但是我现在都没搞测试,这个东西其实也可以删掉。
这一块其实也没什么用,也可以删掉。
上图是我的pom文件,下图是黑马视频里面的,整个springboot就靠着两个东西(parent和dependency)。
② 小总结与对比spring开发
最重要的两个文件,第一就是咱们的pom.xml文件,第一个就是它有一个继承,第二个就是有个依赖。我们boot现在能够开发web相关功能,就是靠的√web的这一项。
第二个文件Application就更简单了,就这么一个类,里面有个main方法,直接按java的运行形式就可以运行。
why:为什么需要联网?
因为我们的工程结构,包括这两个文件都是从网上下载来的,那要是我们要用别的工程做,没有idea那怎么办?我们就直接去spring的官网上去创建这个过程:
然后点generate,步骤基本一样(跟idea)。
点击完后就会给你生成一个zip压缩文件,
打开以后就会看到如上的东西,基本该有的都会有,里面的东西基本都一样。
③ SpringBoot项目快速启动
前后端分离合作开发:
假设现在你开发好程序了,你和前端的开发人员配合在一块工作,前端是做页面的,你是做后台功能的,当你把程序做完以后,服务器是不是运行在你的电脑上,那前端人员如果想调一调它前面开发的页面,这时候就会有一个障碍,要连你的电脑才能做测试,那这多麻烦,你的电脑要开服务器他才能用,不开他就用不了,于是前端人员就尝试着自己安个idea,自己按个tomcat,然后把这个程序运行一下,那前端的开发人员就哭了,他说做个前端还要会你后端的技术,这个时候,其实springboot不用这样子。
boot程序可以不依赖tomcat、idea这些东西运行,不过有些东西(数据库)他那边没有,所以只需要你的程序连数据库,他的程序也连对应的数据数据库,
双击执行一下package,这时它会产生一个打好的包(jar包)。
在下图这个目录(即存放jar包的目录)打开cmd,然后输入java -jar jar包名称,
注意: spring里面这里也能导jar包,但是不能像boot一样能运行。
④ 起步依赖(简化依赖配置)
⑴程序搭建过程变简单:不用配置Tomcat
⑵开发过程也变简单了:配置类不用写
整个过程都变简单了。
接下来看几张我项目里面的pom文件:
下面是黑马视频的pom文件:
做spring开发,你们这些开发者天天在这纠结版本问题,我把所有版本给你一个不落的整理一遍,这些版本配合在一起工作是最佳实践,以后你就不用管版本了。你只要告诉我你是用的spirngboot几,我就把这个版本对应的全都给你做好,
在这里做了无数个技术版本的管理,但你这里配上,基本的都没有用,他只是告诉你你可以引用,那有人引用吗,如何引用?
所以这个pom文件相当于是给我们配置了一系列的版本,还有要用到的版本的依赖管理,到这我们就得到一个信息了:
以上就是pom文件第一个核心的东西。
再来看看第二个核心的:
点进去看,里面也有各种依赖(我们主要关注这些)。
有啥好处:原来这个就是起步依赖(starter-test/starter-web),当你需要用什么技术的时候,就把这个技术对应的起步依赖加上就行了。
总结:
到这里就知道为什么简化框架能那么快速的搭建起来,就是因为上面做了无数个版本管理,再加上下面做了无数个依赖,最终你得到一系列的东西。而这些配置都是帮你提前写好的。
它一执行,就会把我们的程序运行起来,而执行的时候依据是什么,就要看你起步依赖里面配的是什么了。
开发前需知:你项目组开发的spirng版本,然后找到对应的boot版本是几,根据这个版本去创建项目。
⑤ 辅助功能之切换web服务器
引入了tomcat-starter,就可以让我们的程序内置一个tomcat服务器了,这些功能都是辅助功能,并不是为你开发程序,给你提供对应的业务功能的,比如说我们导一个结构内的做测试,我们导一个logo back能做日志,而这个东西是启动程序用的,所以它是辅助功能。
我们做个新的东西,不用tomcat服务器,用Jetty服务器。
这里说Jetty比Tmocat更轻量级体现在,tomcat里面配置了所有东西,你用不用它都在,jetty呢就反过来,它里面啥都没有,你需要用呢再自己配。
2.2 基础配置
① 配置文件格式(3种)
如何修改服务器端口号?
springboot提供了三种格式:
创建新的配置文件(后缀为yml,这是一种全新的配置文件)
第三种写法,是上一种yml的另外一种扩展格式,yaml。
上面这里打个port 发现没有快捷,如何操作呢:
以后我们主要写yml这一种。
讲讲yaml:
yaml数据读取方式(3种):
第一种:
第二种:
第三种:
总结:常用的方式,实际上是使用实体类来封装一个对象,然后把这个对象数据包装在一起来读取,怎么做呢?首先@Component定义为spring管理的bean,然后使用@ConfigurationProperties来给它说明你当前实体类加载哪个属性。
② 多环境开发配置
第一种:
第二种:
第三种:
③ 多环境命令行启动参数配置(了解)
参数加载优先级:
这一块有几个坑,下面快速回顾一下:
第一,执行package打包之前执行clean,千万要记住这件事。第二因为我们文件的编码问题,把这些东西的字符集给改一下。
第三,当你有多个配置的时候,你想验证哪一种,把其他的找个地方备份一下,不要干扰你的验证效果,而实际开发的时候,你一般只会写一种格式,不会写两种的啊。
④ 多环境开发控制
首先明白一点,boot程序最终启动是打好的那个jar包,那么那个jar包是谁帮我们做的呢,是maven。执行package指令后得到那个jar包, 如果maven和boot都有 profile 的话,maven用来最终打包,它里边的profile应该是起主导作用,而我们boot里边的这个多环境开发,仅仅相当于maven打包过程中的一个工具。
总结:
对它的资源文件进行解析,占位符解析就ok了。
⑤ 配置文件分类
我们之前将测试使用临时的测试,就能解决它的一些配置的问题,但是测试又来找你了,他现在临时属性太多了,我每次启动服务器,我都要加这么一堆配置,而且还容易写错,你能不能给我找一个简单的方式呢,当然可以,在我们boot中提供很多多级配置文件,通过这样的一种设定就能解决它这样的问题。
2.3 整合第三方技术
① Spring整合junit 与spirngboot整合junit(复习)
原先spring整合JUnit的开发,首先上面要设置一个运行器,然后要设置加载哪一个spring的配置类或者配置文件,然后类里面要注入你要测试的对象,接下来就执行我们的测试功能就行了。
分析: 所有人在写这个代码的时候,有没有考虑过第一行大家写出来有什么不一样,是不是一模一样,其次我们现在的配置类是不是因为大家叫的名称不一样,如果要是都一样的话,那就不用写了对吧。所以springboot给我们做的整合要比spring整合优化了好多。
因为他的依赖有些不一样。
他这里边一定用了运行器,只不过大家都写干脆别写了,我boot直接帮你写好不就行了吗,这是一点,第三点,现在不用写加载哪个配置文件了,因为在我们的java源代码里边,我们有这么一个类SpringbootTestApplication(引导类),这个类就起到了配置类的作用,这个类在什么位置,就会把它所在包及其子包全部扫描一遍,所以那边写的@Service才能加载成bean。
如果光基于应用层来看boot的单元测试的话,它非常的简单,一,测试类上面写的@SpringBootTest这个东西,因为现在是自动产生的测试类,所以这句话你都没写,二,把你自己要测的资源注入进去,第三,直接用就行了。
② Springboot整合mybatis
你想想前两块需要做吗,你一直在用的是spirngboot开发spirng程序,故不存在前面两种操作,我们之前做的springmvc的开发,其实就是前面打的那个勾√,把对应的起步依赖引进来就可以了。而springboot整合myabtis就必须做了,做之前先回顾一下spirng整合mybatis。
spring整合mybatis,首先spring的配置文件要导入这两个东西,
接下来是我们的JDBC配置,里边要配数据源,
总结:
其实springboot整合mybatis超级简单的,来看看这几步先不说了吧,
③ 基于Springboot的SSM整合案例
我们想把ssm整合那个案例导进来,然后再说说我们应该怎么操作。
大体上有这么几步,首先pom文件里面起步依赖,这是你勾选的对吧,其实你不勾选,你复制粘贴过去,它也能用,勾选呢只是idea给我们提供了一种配置方式,那必要的坐标给他勾选上,比如说你要用druid,你给它导进去,因为boot的默认资源管理中是没有druid的坐标的。
第二个咱们是不是得把数据源的端口,这些东西给配备啊,这是必要的。
剩下来配置类,之前咱们做spring的时候是不是有一堆配置类现在都没了,因为我们现在没有写任何配置,是不是spring、springmvc的环境跑的,所以这全部删掉。
接下来dao别忘了把那个@Mapper加上,最后把测试一跑就ok了。
那这里面有个问题,页面呢,我们再把这个页面处理一下,那页面如何处理呢,等前面咱们做完后再回来看。
咱们这里已经把之前那个ssm项目导入,然后开始改,
把它复制过去粘贴到it.heima目录下面
config层:
我们从config去看,整个目录其实都可以干掉了,因为所有配置我们都可以删除了。
回头这些东西是不是转换成配置了,所以把这个删掉了。
上面这个是不是处理静态页面的,等页面拷过来,我们再说处理方案。然后把config目录整个干掉。
domain层:
dao层:
在这我们要加一个@Mapper,这个东西是干什么用的?是不是让springboot可以扫描到这个组件,然后生成它的自动代理:改造完如下图:
service层:
在service里面接口不用管它,
这里面没有什么过多需要说的东西,你呢就记得一点,这个有个地方有个id==1,一会你测试的时候,如果说你要查一的这个他会抛异常。
control层:
对于control里边没有任何变化,然后Code、Result包括异常处理器这些,我们是不是都放在控制器下了。如果你要放到那个config目录下的话你别删错了,这些东西还要用的。
Springboot核心主导类:
resource:
把application.properties改成yml格式,改完以后把jdbc.properties里边的信息配置到yml里边,
到这呢,咱们这一套东西就全部做完了。
三、总结:🍓🍓🍓
时隔七天左右,springboot的学习到此告一段段落,接下来开始进入mybatisplus的学习。