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/
这里就不放项目创建截图了,会在下面的eclipseIDEA下面放出截图。

二、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

下载完后,配置maven2020版本之前的设置配置阿里云的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
2
#后面配置maven同上
File -> new project settings -> settings for new projects

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
2
3
4
5
6
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

做完上面的配置后,再配置置自己下载的mavenIDEA中。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
2
#例如 cd 接具体目录
cd /workspace/demo

mvn命令运行项目

1
mvn clean package spring-boot:run

其实,使用开发工具创建项目和这种模式差不多,区别不大。无论是sts-eclipse,还是IDEAeclipse创建项目都是大同小异的。创建完后,可以使用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
2
3
4
5
6
7
<!-- 注意scope的用法,使用mvn命令启动没问题,在idea里点run就出问题 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 在idea中启动正常执行退出,屏蔽解决问题,scope用法我是很疑惑的 -->
<scope>provided</scope>
</dependency>

使用eclipse for javaee:启动毫无问题。使用idea屏蔽掉<! –< scope >provided</ scope > –>这个属性,启动不会退出。

保留一点悬念。关于scope属性的用法,这里不做描述,请阅读官方文档。解决问题篇到此就全部描述完了,后面衔接具体讲解篇,会简单的涉及到mvc三层中的controllerdaojpa里面就叫repository)的简单使用。


实战讲解篇

1、controller的简单使用

1.1、常用的一些注解

1
@Controller

作用:处理http请求

1
@RestController

作用:spring4之后新加的注解,原来返回json数据需要ResponseBody+@Controller配合使用。

1
2
//(旧版,特殊需求需要用到)
@RequestMapping

作用:配置url映射

1
@GetMapping

作用:以get形式提交,一般用作查询

1
@PostMapping

作用:以post方式提交,用于修改或者更新

1
@PathVariable 

作用:获取url中的数据

例如

1
2
3
4
@GetMapping("/hello/{id}")
public String Hello(@PathVariable("id") Integer id){
return "id:" + id;
}

测试:默认启动端口为8080,你不改也行,我这里演示需要就改了。

1
http://localhost:8081/hello/100  

返回结果:id=100

1
@RequestParam

作用:获取请求参数的值

例如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 这样设置,url后必须传ID
@GetMapping("/must")
public String test(@RequestParam("id") Integer id){
return "id:" + id;
}

// 这样设置,url后非必须传ID,可以设置默认值
@GetMapping("/normal")
public String testNotSetId(@RequestParam(value = "id",required = false,defaultValue = "0")
Integer id){
return "id:" + 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
2
3
4
5
6
7
8
9
#jdbc_config   datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#autoReconnect=true这个属性表示自动重连,具体以实际开发需求为准。
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/kart?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
spring.datasource.username=root
spring.datasource.password=root
配置数据源
#Hikari will use the above plus the following to setup connection pooling
spring.datasource.type=com.zaxxer.hikari.HikariDataSource

采用application.yml文件形式,推荐这种方式配置

1
2
3
4
5
6
7
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/kart?characterEncoding=utf8
username: root
password: 123456
type: com.zaxxer.hikari.HikariDataSource

pom.xml文件相应的也需要配置
这里不用设置版本,spring-boot已经为你设置好了。这就是spring-boot的好处,减少配置。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

最后就是Java代码的书写,当然这里就不贴代码了。留个悬念,自行参考官网的示例。
JPA使用起来很方便,推荐去官网学习学习

小声哔哔

好了,到此为止就是此篇文章的全部内容了,能看到这里的都是帅哥靓妹啊!!!善于总结,其乐不穷。好记性不如烂笔头,多收集自己第一次尝试的成果,收获也颇丰。你会发现,自己的知识宝库越来越丰富