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
的版本,也有历史版本。
使用 sts-eclipse
创建项目,与下载插件的 eclipse
创建方式同理。
1. 点击 File
,再点击 New
,然后点击 Spring Starter Project
创建项目
2. 也可以使用快捷键:Alt+Shift+N
,然后点击 Spring Starter Project
创建项目
创建项目,并配置属性
配置项目,选好需要的依赖,并且定好稳定版本
你看了上面的截图,会发现和下面使用 https://start.spring.io/官网去创建项目是不是很类似,只是利用的工具不一样而已。
三、IDEA 官网直通车。
tips:采用学生邮箱注册账号,永久免费使用旗舰版。
下载完后,配置 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。
五、通过 spring 官网快捷创建项目
点击开启创建项目之旅:
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 | @Controller |
作用:处理 http 请求
1 | @RestController |
作用:spring4 之后新加的注解,原来返回 json 数据需要 ResponseBody+@Controller 配合使用。
1 | //(旧版,特殊需求需要用到) |
作用:配置 url 映射
1 | @GetMapping |
作用:以 get 形式提交,一般用作查询
1 | @PostMapping |
作用:以 post 方式提交,用于修改或者更新
1 | @PathVariable |
作用:获取 url 中的数据
例如:
1 | @GetMapping("/hello/{id}") |
测试:默认启动端口为 8080,你不改也行,我这里演示需要就改了。
1 | http://localhost:8081/hello/100 |
返回结果:id=100
1 | @RequestParam |
作用:获取请求参数的值
例如:
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://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 使用起来很方便,推荐去官网学习学习。
小声哔哔
好了,到此为止就是此篇文章的全部内容了,能看到这里的都是帅哥靓妹啊!!!善于总结,其乐不穷。好记性不如烂笔头,多收集自己第一次尝试的成果,收获也颇丰。你会发现,自己的知识宝库越来越丰富。