一、背景
本文章屬于系列文章屏富,背景請(qǐng)前往系列入口文章
本篇介紹如何上手搭建一個(gè)基于spring boot的項(xiàng)目
二驯耻、spring boot
1. spring boot是什么?
spring boot可以快速搭建一個(gè)可配置崔慧、可運(yùn)行的后端web項(xiàng)目拂蝎,從繁雜的xml配置,到基于注解惶室、自動(dòng)掃描温自,很大地 方便了開發(fā)者的工作。(如果有點(diǎn)歷史的人皇钞,應(yīng)該知道web.xml配置controller悼泌、dispatcher的年代,哈哈)
2. 上手
2.1 官網(wǎng)下載
進(jìn)入官網(wǎng)夹界,按照?qǐng)D片順序馆里,下載基礎(chǔ)代碼。
2.2 運(yùn)行
2.2.1 打開項(xiàng)目
完成上面的步驟后可柿,會(huì)下載一個(gè)包鸠踪,以項(xiàng)目的方式打開(這里我用的是idea開發(fā)工具)
(若打開項(xiàng)目失敗,可以嘗試直接打開根目錄下的build.gradle文件复斥,idea會(huì)自動(dòng)識(shí)別成gradle項(xiàng)目)
2.2.2 點(diǎn)擊運(yùn)行
2.2.3 運(yùn)行成功
2.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是一個(gè)插件,jpa 和 mysql 是用來處理數(shù)據(jù)庫連接的永票。
接下來卵贱,我們要連接數(shù)據(jù)庫,希望可以對(duì)數(shù)據(jù)庫進(jìn)行增刪改查侣集,對(duì)外暴露rest接口
2.4 數(shù)據(jù)庫準(zhǔn)備
2.4.1 遇到的錯(cuò)誤
我這里用了mysql键俱,最開始用本地對(duì)mysql,并且設(shè)置了密碼跳過功能(也就是每次登錄mysql世分,只需要給用戶名root编振,不用密碼),導(dǎo)致出現(xiàn)了一下錯(cuò)誤:
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
具體原因還沒有研究,但是為了簡單的刻意練習(xí)踪央,建議不要設(shè)置成密碼跳過臀玄,而是用docker的方式
2.4.2 docker啟動(dòng)mysql
docker 不是本文重點(diǎn),請(qǐng)自行安裝畅蹂。
需要先安裝docker健无,再拉鏡像,接著運(yùn)行液斜。這里給出 mysql鏡像地址
- 拉鏡像:
docker pull mysql
- 運(yùn)行:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3309:3306 mysql:5.7
- 進(jìn)入鏡像系統(tǒng):
docker exec -it some-mysql bash
- 在鏡像里面進(jìn)入mysql:
mysql
累贤,如圖:
2.5 數(shù)據(jù)庫連接配置
準(zhǔn)備好數(shù)據(jù)庫后,我們需要把項(xiàng)目和數(shù)據(jù)庫進(jìn)行連接少漆,做CRUD時(shí)臼膏,會(huì)走這個(gè)數(shù)據(jù)庫。
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 準(zhǔn)備數(shù)據(jù)庫數(shù)據(jù)
在剛剛docker啟動(dòng)的容器中(mysql>處)示损,執(zhí)行以下命令(這里我們創(chuàng)建了一個(gè)數(shù)據(jù)庫supermarket渗磅,并且新建了item表,這個(gè)表的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 中自定義兩條數(shù)據(jù)检访,請(qǐng)自行執(zhí)行insert into指令
至此始鱼,所有的準(zhǔn)備工作都已完畢,接下來可以進(jìn)行接口的開發(fā)烛谊。接口的開發(fā)主要是利用注解风响、jpa嘉汰、controller丹禀、repository、entity等鞋怀,具體請(qǐng)自行分析github項(xiàng)目代碼的first分支双泪。
若拷貝完代碼,打開http://localhost:8080/
密似,效果如下圖:
其余item的增刪改查接口(github的代碼可用)焙矛,可供讀者調(diào)試使用(如postman)。
(完)