搭建自己的spring boot项目
一、背景
本文章属于系列文章,背景请前往系列入口文章
本篇介绍如何上手搭建一个基于spring boot的项目
二、spring boot
1. spring boot是什么?
spring boot可以快速搭建一个可配置、可运行的后端web项目,从繁杂的xml配置,到基于注解、自动扫描,很大地 方便了开发者的工作。(如果有点历史的人,应该知道web.xml配置controller、dispatcher的年代,哈哈)
2. 上手
2.1 官网下载
image.png进入官网,按照图片顺序,下载基础代码。
2.2 运行
2.2.1 打开项目
完成上面的步骤后,会下载一个包,以项目的方式打开(这里我用的是idea开发工具)
(若打开项目失败,可以尝试直接打开根目录下的build.gradle文件,idea会自动识别成gradle项目)
2.2.2 点击运行
image.png2.2.3 运行成功
image.png2.3 添加依赖
将build.gradle修改为:
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
// id "org.flywaydb.flyway" version "6.5.5"
}
group = 'com.mark'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtime('mysql:mysql-connector-java') //JDBC依赖库
}
test {
useJUnitPlatform()
}
其中,lombok是一个插件,jpa 和 mysql 是用来处理数据库连接的。
接下来,我们要连接数据库,希望可以对数据库进行增删改查,对外暴露rest接口
2.4 数据库准备
2.4.1 遇到的错误
我这里用了mysql,最开始用本地对mysql,并且设置了密码跳过功能(也就是每次登录mysql,只需要给用户名root,不用密码),导致出现了一下错误:
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
具体原因还没有研究,但是为了简单的刻意练习,建议不要设置成密码跳过,而是用docker的方式
2.4.2 docker启动mysql
docker 不是本文重点,请自行安装。
需要先安装docker,再拉镜像,接着运行。这里给出 mysql镜像地址
- 拉镜像:
docker pull mysql
- 运行:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3309:3306 mysql:5.7
- 进入镜像系统:
docker exec -it some-mysql bash
- 在镜像里面进入mysql:
mysql
,如图:
image.png
2.5 数据库连接配置
准备好数据库后,我们需要把项目和数据库进行连接,做CRUD时,会走这个数据库。
2.5.1 配置src/main/resources/application.properties
文件如下:
spring.datasource.url=jdbc:mysql://127.0.0.1:3309/supermarket
spring.datasource.username=root
spring.datasource.password=password
2.6 准备数据库数据
在刚刚docker启动的容器中(mysql>处),执行以下命令(这里我们创建了一个数据库supermarket,并且新建了item表,这个表的id是自增的)
CREATE DATABASE `supermarket` /*!40100 DEFAULT CHARACTER SET utf8 */
# 在supermarket中建表
CREATE TABLE `item` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`price` double unsigned NOT NULL DEFAULT '0',
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
# 可以在 item 中自定义两条数据,请自行执行insert into指令
至此,所有的准备工作都已完毕,接下来可以进行接口的开发。接口的开发主要是利用注解、jpa、controller、repository、entity等,具体请自行分析github项目代码的first分支。
若拷贝完代码,打开http://localhost:8080/
,效果如下图:
其余item的增删改查接口(github的代码可用),可供读者调试使用(如postman)。
image.png
(完)