springboot初体验
还记得那个某课网的两小时入门springboot的课程吗?某师兄的springboot系列教学视频确实是有点东西的,就是骚了一点。结果可想而知,在N年后被某人给举报了,被强制下架了,原因是引起某女学员不适。这门视频教程还是有可取之处的,通俗易懂。
链接: https://pan.baidu.com/s/1UJFuqEeQ1eAlC3n4SeCmTQ?pwd=syi5 提取码: syi5
前言
我最初是2017年年初开始接触springboot的,那会还是看的某编程网站的视频教程入门的(彼时springmvc还是主流,springboot刚刚进入人们的视线)。如今也打算总结一篇,关于快速入门springboot的图文教程。
其实网上已经有很多类似的教程了。无外乎图文详解,视频教程。当你看此篇教程时肯定是最新的,距离spring-boot崛起已经有4年了。但是,我还是准备写一篇关于spring-boot的详细教程。记录参考官方文档遇到的坑,也是对自己的一次总结。由于是初体验,会描述的很详细,但是不会太过于深入。会包含开发工具篇,也是为了照顾想入坑的,综合性的全面讲解非常有必要。
正文
开发工具篇
一、SpringTools官网直通车
https://spring.io/tools/
这里就不放项目创建截图了,会在下面的eclipse
和IDEA
下面放出截图。
二、eclipse官网直通车。
已经使用eclipse
了,可以去下载离线插件包。下图有JavaEE
等其它ide
的版本,也有历史版本。
https://www.eclipse.org/downloads/packages/
使用sts-eclipse
创建项目,与下载插件的eclipse
创建方式同理。
1.点击File
,再点击New
,然后点击Spring Starter Project
创建项目
2.也可以使用快捷键:Alt+Shift+N
,然后点击Spring Starter Project
创建项目
创建项目,并配置属性
配置项目,选好需要的依赖,并且定好稳定版本
你看了上面的截图,会发现和下面使用https://start.spring.io/官网去创建项目是不是很类似,只是利用的工具不一样而已。
三、IDEA官网直通车。
tips:采用学生邮箱注册账号,永久免费使用旗舰版。
https://www.jetbrains.com/idea/download/#section=windows
下载完后,配置maven
,2020版本之前的设置,配置阿里云的maven镜像在下面有说明。
单个项目生效(settings)
01、选中项目test
02、右键选择settings,搜索maven
多项目生效(default settings)
01、点击空白处,选择FILE
,找到other settings
02、选择default settings
03、找到Build, Execution, Deployment
这一栏
04、选择Bulid Tools
点击展开
05、然后配置maven
,这样就解决了IDEA
一次设置所有新建的maven
项目都生效。
2020版本以及后面的设置
1 | #后面配置maven同上 |
idea的版本不用太新或者比较旧的版本,稳定就行。我个人一直沿用的2017.1的版本,用作测试完全没问题的。打开IDEA首先显示已经创建过的项目。
进入主界面创建项目方法
创建项目
这里会选择你的启动IDEA默认配置的JDK版本,当然右上角的New可以配置安装其它的JDK版本。
进入项目配置文件列表
我选择的是JDK8
版本与我默认使用版本保持一致。你也可以视情况而定,这个并不冲突。第三种创建方式对项目配置列表有的详细的描述,这里就不做过多介绍。
配置pom依赖
为了演示需要,我选择了Spring Web
选项。
配置完后,点击finish创建项目
project:项目名
project location:工作空间,可以自行选择修改的。
1、配置maven镜像
官方默认的镜像地址是国外的,懂得都懂,龟速前进。配置阿里云的镜像地址,瞬间飞一般的感觉,纵享丝滑。
配置settings.xml
文件,设置repo
存储地址。
将下面的阿里云maven镜像地址配置到mirrors中。当然也可以配置到pom.xml
文件中,单个项目生效。
1 | <mirror> |
做完上面的配置后,再配置置自己下载的maven
到IDEA
中。eclipse
配置maven
也是大同小异,我就没截图了。
注意:这里选中项目进行设置,只对单个项目生效的,上面有说明的。
项目的启动就不做过多截图了,选中DemoApplication.java
通过右键点击run
运行,项目右上角也有run
选项启动。
或者在控制台使用命令运行,清理后打包再运行。这个命令适用windows
平台的CMD
控制台以及DIEA
自带的Terminal
控制台,其它方式请参考官方文档。
1 | mvn clean package spring-boot:run |
项目启动成功的界面
IDEA这个工具太强大了,里面还有很多快捷键需要你自己摸索熟练的应用。我最喜欢这款软件的原因,是她的自动保存机制真的很nice。
也不排除有的人就喜欢用eclipse,直到现在我还是用eclipse比较多,可能是先入为主吧,很多快捷键都适应了。由于是初体验,所以花了很大篇幅讲解了利用开发工具创建项目。
使用何种IDE,视你的实际工作环境而定,没必要纠结。
四、spring-boot官网直通车。
进入官网可以看到此时的最新稳定版是2.0版本的:2.3.4.release(release代表稳定版)
可以参考官方文档,毕竟最好的自学方式,还是采用官方文档。此时最新稳定版为2.3.4。
https://spring.io/projects/spring-boot
五、通过spring官网快捷创建项目
点击开启创建项目之旅:
https://start.spring.io/
1、详细的描述
以下是截的全图
2、详情简述
- Project:采用maven或者其它方式构建
- Language:采用java语言或者其它语言
- Dependencies:pom文件依赖,勾上spring-web
- Spring Boot版本:2.3.4目前最新稳定版
- Project Metadata:值得注意的几个点
- Group:项目组名,例如com.kart
- Artifact:项目名,例如demo
- Description:项目描述
- Packaging:打包,Jar包或者War包
- Package name:项目包名,例如com.tcloud.demo.
- Java版本:采用JDK8或者11,具体是实际情况而定
- GENERATE CTRL+:点击创建项目
3、打包运行springboot项目
windows下面的CMD命令操作我就不做过多描述。习惯了linux下的命令操作,反而不习惯win的命令操作了。使用CMD命令提示符或者win10自带的win_powershell都可以,以管理员身份运行。
切换到D盘。与linux不同,linux
是一个文件系统。
1 | d: |
切换到具体目录,这点和linux
是一样的
1 | #例如 cd 接具体目录 |
mvn命令运行项目
1 | mvn clean package spring-boot:run |
其实,使用开发工具创建项目和这种模式差不多,区别不大。无论是sts-eclipse
,还是IDEA
和eclipse
创建项目都是大同小异的。创建完后,可以使用eclipse或者IDEA导入(import)项目,只是使用工具创建项目更加方便而已。
工欲善其事,必先利其器。 假如创建项目折腾半天,你可能会半途而废。所以上面花了很大的篇幅介绍了各种工具的使用,如何快速创建springboot
项目。开发工具篇到此就全部介绍完了。后面衔接解决问题篇,介绍了我遇到的一些问题,将来你可能也会遇到。
六、解决问题篇
1、发现问题
idea启动spring-boot项目问题
1 | No active profile set, falling back to default profiles: default |
可以选择忽略掉,程序运行起来是没问题的
1 | Process finished with exit code 0 |
翻译:程序执行完毕并退出
2、思考问题
应该与spring-boot版本无关。在控制台,使用以下命令执行是没问题的。
1 | mvn clean package spring-boot:run |
所以猜测是不是idea启动与pom文件的某个设置属性有关,由此发现tomcat设置有问题。
3、解决方案
万一遇到jar包冲突
1 | <!-- 注意scope的用法,使用mvn命令启动没问题,在idea里点run就出问题 --> |
使用eclipse for javaee:启动毫无问题。使用idea:屏蔽掉<! –< scope >provided</ scope > –>这个属性,启动不会退出。
保留一点悬念。关于scope
属性的用法,这里不做描述,请阅读官方文档。解决问题篇到此就全部描述完了,后面衔接具体讲解篇,会简单的涉及到mvc三层中的controller
和dao
(jpa里面就叫repository)的简单使用。
实战讲解篇
1、controller的简单使用
1.1、常用的一些注解
1 |
作用:处理http请求
1 |
作用:spring4之后新加的注解,原来返回json数据需要ResponseBody+@Controller配合使用。
1 | //(旧版,特殊需求需要用到) |
作用:配置url映射
1 |
作用:以get形式提交,一般用作查询
1 |
作用:以post方式提交,用于修改或者更新
1 |
作用:获取url中的数据
例如:
1 |
|
测试:默认启动端口为8080,你不改也行,我这里演示需要就改了。
1 | http://localhost:8081/hello/100 |
返回结果:id=100
1 |
作用:获取请求参数的值
例如:
1 | // 这样设置,url后必须传ID |
测试:
1 | http://localhost:8081/test?id=100 |
返回结果:id:100
2、Repository
2.1、简介
首先看一看JPA、Hibernate、MyBatis以及JDBC的简介。
JPA
抽象存储库的实现是Java应用程序框架Spring的领域驱动设计的关键构建块。 透明地支持所有可用的JPA实现,并支持CRUD操作以及方便地执行数据库查询。
Hibernate
Hibernate为Java提供了一个开源的对象关系映射框架。版本3.2及更高版本提供了Java 持久化 API的实现。Gavin King创立了Hibernate项目。他代表JBoss参加JSR220,这是负责开发JPA的JCP专家组。这引发了围绕JPA和Hibernate之间关系的持续争议和猜测。Sun Microsystems表示,这些想法来自几个框架,包括Hibernate和Java 数据对象。
MyBatis
是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。MyBatis是在Apache许可证 2.0下分发的自由软件,是iBATIS 3.0的分支版本。其维护团队也包含iBATIS的初创成员。
JDBC
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。
Spring Data JPA
参考官方文档,进行学习。
https://spring.io/projects/spring-data-jpa#learn
版本控制
https://github.com/spring-projects/spring-data-jpa
简单示例
https://github.com/spring-projects/spring-data-examples/tree/master/jpa
通过以上给出的jpa的简单示例链接,你可以到github上研究研究。
spring
官方将jpa
集成到了spring
容器里面,使用起来更加方便快捷。
以下引用了spring
官方的描述,有的是自己翻译调整的,可能描述有瑕疵。
Spring Data JPA是这个庞大家族Spring Data系列的一部分,可轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring支持的应用程序变得更加容易。
实现应用程序的数据访问层已经很长一段时间了。为了执行简单查询以及执行分页和审核,必须编写太多样板代码。Spring Data JPA旨在通过将工作量减少到实际需要的数量来改善数据访问层的实现。作为开发人员,您将编写包括自定义finder方法在内的存储库接口,Spring会自动提供实现。
Spring Data JDBC
是这个庞大家族spring-data系列的一部分,对JDBC数据访问进行增强支持,构建更容易。 现在没有提供JPA的缓存,延迟加载。旨在简洁,功能有限,不需要过于复杂的功能。 未来将会回写很多JPA里面支持的其它的功能。
2.2、联系
Spring Data JPA、Hibernate、MyBatis这几个比较火的ORM持久层框架。
Hibernate和MyBatis是对JDBC进行了封装,底层实现就是JDBC,阅读源码不难看出。
Spring DataJPA是对Hibernate进行了封装,使用更加方便。
了解完上面的一些理论知识之后,可以加深你对orm框架的理解,便于后续的学习。
3、配置数据库jdbc_config_datasource
采用application.properties文件形式
1 | #jdbc_config datasource |
采用application.yml文件形式,推荐这种方式配置
1 | spring: |
pom.xml文件相应的也需要配置
这里不用设置版本,spring-boot已经为你设置好了。这就是spring-boot的好处,减少配置。
1 | <dependency> |
最后就是Java代码的书写,当然这里就不贴代码了。留个悬念,自行参考官网的示例。
JPA使用起来很方便,推荐去官网学习学习。
小声哔哔
好了,到此为止就是此篇文章的全部内容了,能看到这里的都是帅哥靓妹啊!!!善于总结,其乐不穷。好记性不如烂笔头,多收集自己第一次尝试的成果,收获也颇丰。你会发现,自己的知识宝库越来越丰富。