前言介紹和環境搭建
簡述
springboot 本身是爲了做服務化用的,我們爲什麼要反其道使用它來開發一份單體web應用呢?在我們現實的開發工作中,還有大量的業務系統使用的是單體應用,特別是對於中小型團隊來說,在項目開發之初選擇服務化開發是得不償失的,因爲對於此類團隊,勢必所有的工作都是需要我們開發人員來做的,例如:
- 技術選型
- 業務需求分析
- 業務需求設計
- 大量的測試
- 運行部署
- 運營健康監控
- ...
小團隊或小公司如果開發人員把大規模的精力放在除業務之外的工作中,那麼我們的開發效率勢必會特別低下,等我們系統開發一個版本出來,也許此類需求已經不是那麼符合當前的發展了,此類團隊追求的是短平快並且方便部署更新。有人就會問,那我們又爲什麼不選擇SpringMVC
呢? 當然如果團隊中本身已經有成型的一套SpringMVC的框架可以拿來即用,當然也是完全ok的,但是所有使用過Springboot的同學都知道。
1. Springboot幫我們把以前在SpringMVC中需要使用XML來配置的configuration內置化了,開發人員完全可以把大量精力放在業務鑽研優化上面而不需要關注它是如何配置的。
2. 作爲技術選型來說,一定要想到我們的業務也許會高速擴張,在後期我們得能快速更新技術體系或者升級系統,那麼springboot的本能服務化就可以體現出來了。
3. 很多的新同學在學習springboot的時候,太多的資料本身是一種demo的學習,是需要大家進一步研究之後學以致用,不太貼近生產,我希望通過此次開發,可以直接開發一套可以生產使用的demo系統。
業務分析
在開發任何一個新
系統的時候,我們要實現的是一套電商平臺,那麼我們首先要考慮一個基本的電商平臺都包含哪些業務功能?上圖展示了要實現一個電商最簡單的模塊信息。
技術選型
在技術選型的時候,個人建議遵循幾點原則:
- 切合業務實際需要(任何脫離了業務的技術都是廢柴)
- 團隊人員能力(要符合團隊成員的實際情況,否則上手會很慢)
- 技術社區活躍度(選擇高活躍的技術對於後期排錯相當重要,更爲重要的是大部分錯誤已經被別人試過了...)
- 安全性(必不可少的選擇)
- 可參考 Poc之後,我選擇放棄OSGI
我們主題很明確的表明了要使用springboot
來實現一個web
項目,那麼抓住這兩個關鍵的點。既然使用Springboot, 我們這裏使用最新的版本2.2.0.RELEASE
, 既然是web項目,那麼必然要使用到web相關的技術,tomcat
(springboot內置),並且我們採取前後端分離的技術來開發,後端提供restful 的api, 前端使用jquery
& vuejs
, 既然是一個真實項目,數據庫當然也是我們必不可少的,我們使用MYSQL 8.0
,那麼我們java要和db進行交互,我們使用mybatis
作爲bridge. 基本的技術已經足夠我們使用了,那麼具體依賴的package 後續會給大家一一介紹.
- SpringBoot 2.2.0.RELEASE
- Mysql 8.0.18
- Mybatis 3.4.6
開發工具
工預善其事必先利其器
, 以下是個人工具選擇,僅供參考:
- IntelliJ IDEA (code tools)
- Free Mybatis Plugin (幫助我們方法和SQL跳轉)
- Lombok (使用註解節省太多的codes,提升效率)
- Maven Helper(幫助依賴分析)
- Restful Toolkit(可以實現和postman一樣的簡單效果,同時還能幫助我們生成一部分測試信息)
- ...其他插件就人各有志啦~
- Mysql Workbench(Mysql tools)
- PDman (數據庫設計工具,腳本的版本控制很好用哦)
Talk is cheap, show me the codes
說的再多,都不如來點實在的,那麼我們接下來開始我們的表演吧.
創建單體項目結構
首先我們需要創建一個Maven的parent module, 用來將我們所有的模塊信息都放在一起,如service
,controller
等等.
Create Parent Module expensive-shop
- 打開IDEA,選擇File => New => Project
- 點擊Next,分別輸入
GroupId
&artifactId
- 點擊Next,修改
project name
(不改也沒有關係)
- 點擊Finish
此時,會生成src
和 pom.xml
, 因爲該項目爲父類項目,不會有code實現,因此,刪除src
目錄,並修改pom.xml
文件.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.life-runner</groupId>
<artifactId>expensive-shop</artifactId>
<version>1.0-SNAPSHOT</version>
<name>expensive-shop</name>
<description>develop a on-line shop</description>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring默認使用yml中的配置,有時候要用傳統的xml或properties配置,就需要使用spring-boot-configuration-processor-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--監控端點依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
</project>
主要關注2點:1.修改packaging
爲pom, 表明是一個父類集合2.引入parent
節點爲我們的springboot
,這裏是設置整個project的springboot 相關依賴以及版本管控從上述中,在該節點設置version 爲 2.2.0.RELEASE
之後, 下面所有的group
爲org.springframework.boot
的依賴項都沒有顯示的設置版本信息.
Create child module
和創建父類項目一樣的創建過程,依次創建我們需要用到的child modules, 完成後如下圖:
經過上述環節,相信大家已經可以創建出我們項目所需要的架構環境了,下一次我們將開始實際業務的編碼實現.gogogo.
奔跑的人生 | 博客園 | segmentfault | spring4all | csdn | 掘金 | OSChina | 簡書 | 頭條 | 知乎 | 51CTO