[springboot 開發單體web shop] 1. 前言介紹和環境搭建


前言介紹和環境搭建

簡述

springboot 本身是為了做服務化用的,我們為什么要反其道使用它來開發一份單體web應用呢?
在我們現實的開發工作中,還有大量的業務系統使用的是單體應用,特別是對於中小型團隊來說,在項目開發之初選擇服務化開發是得不償失的,因為對於此類團隊,勢必所有的工作都是需要我們開發人員來做的,例如:

  • 技術選型
  • 業務需求分析
  • 業務需求設計
  • 大量的測試
  • 運行部署
  • 運營健康監控
  • ...

小團隊或小公司如果開發人員把大規模的精力放在除業務之外的工作中,那么我們的開發效率勢必會特別低下,等我們系統開發一個版本出來,也許此類需求已經不是那么符合當前的發展了,此類團隊追求的是短平快並且方便部署更新。有人就會問,那我們又為什么不選擇SpringMVC呢? 當然如果團隊中本身已經有成型的一套SpringMVC的框架可以拿來即用,當然也是完全ok的,但是所有使用過Springboot的同學都知道。

  1. Springboot幫我們把以前在SpringMVC中需要使用XML來配置的configuration內置化了,開發人員完全可以把大量精力放在業務鑽研優化上面而不需要關注它是如何配置的。
  2. 作為技術選型來說,一定要想到我們的業務也許會高速擴張,在后期我們得能快速更新技術體系或者升級系統,那么springboot的本能服務化就可以體現出來了。
  3. 很多的新同學在學習springboot的時候,太多的資料本身是一種demo的學習,是需要大家進一步研究之后學以致用,不太貼近生產,我希望通過此次開發,可以直接開發一套可以生產使用的demo系統。

業務分析

在開發任何一個系統的時候,我們要實現的是一套電商平台,那么我們首先要考慮一個基本的電商平台都包含哪些業務功能?
architecture
上圖展示了要實現一個電商最簡單的模塊信息。

技術選型

在技術選型的時候,個人建議遵循幾點原則:

  1. 切合業務實際需要(任何脫離了業務的技術都是廢柴)
  2. 團隊人員能力(要符合團隊成員的實際情況,否則上手會很慢)
  3. 技術社區活躍度(選擇高活躍的技術對於后期排錯相當重要,更為重要的是大部分錯誤已經被別人試過了...)
  4. 安全性(必不可少的選擇)
  5. 可參考 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
    create parent module

  • 點擊Next,分別輸入GroupId & artifactId
    write groupid & artifactid

  • 點擊Next,修改project name(不改也沒有關系)
    修改project name

  • 點擊Finish

此時,會生成srcpom.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之后, 下面所有的grouporg.springframework.boot的依賴項都沒有顯示的設置版本信息.

Create child module

和創建父類項目一樣的創建過程,依次創建我們需要用到的child modules, 完成后如下圖:
create child module

經過上述環節,相信大家已經可以創建出我們項目所需要的架構環境了,下一次我們將開始實際業務的編碼實現.
gogogo.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM