1. 程式人生 > >Java高併發秒殺系統API之SSM框架整合swagger與AdminLTE

Java高併發秒殺系統API之SSM框架整合swagger與AdminLTE

初衷與整理描述

Java高併發秒殺系統API是來源於網上教程的一個Java專案,也是我接觸Java的第一個專案。本來是一枚c#碼農,公司計劃部分業務轉java,於是我利用業務時間自學Java才有了本文,本來接觸之初聽別人說,c#要轉java很容易,我也信了,但是真正去學習的時候還是踩了無數個坑,好在朋友有幾個做安卓的,向他們討教了一些經驗,但是他們做安卓的和web又是兩個方向,於是繼續一個人默默採坑避雷之旅,首先上手的是下面這個Java高併發秒殺系統API。

學習java的初衷一個是公司轉行,二是自己也想學學看,增加下技術的厚度,多瞭解下不同程式語言,不同實現方式。融會貫通,才能打通任督二脈。之前也看過python的東西,但是興趣不大,Java畢竟生態很好,各種大神很多,每個語言也有不同的優缺點,多瞭解有利於自身發展。

關於這個秒殺系統園子已經有幾位大神寫過了相關的文章,其實本不想獻醜的,權且當作學習筆記看吧,重點講的是在這個系統之上整合swagger和AdminLTE,為什麼整合它們呢,因為我已經在c#.net專案裡面做過相關的內容,
ABP+AdminLTE+Bootstrap Table許可權管理系統一期 ,哈哈,自我營銷一下,有興趣的朋友可以看一下順便點個贊再走?
本來以為swagger ui和AdminLTE整合會很簡單的,但是動手去做的時候發現了很多問題,由於我之前就是抱著先寫一個web專案再說的初衷去做的,做完之後確實發現了很多問題,其實最重要的問題就是基礎不牢,地動山搖,寫完這篇文章之後,我決定要重基礎學著來,深度學習一下。包括但不限於像tomcat,servlet,Webservice,MyBatis,Maven,spring,spring boot,spring cloud。

上手

廢話不多說,開整。關於Java開發環境的配置我就不扯了,網上教程一大堆,說下Maven的配置,首先去官網下載http://maven.apache.org/download.cgi
image.png
image.png
然後是系統變數的配置
image.png
Path配置
image.png

然後win+R快捷鍵cmd進入dos視窗,輸入命令,mvn -v(注意中間有個空格),回車執行後可以看見maven版本maven home表示安裝成功

Maven 自動生成專案

最後在命令列中輸入以下命令:mvn archetype:generate -DgroupId=cn.codingxiaxw.seckill -DartifactId=seckill -Dpackage=cn.codingxiaxw.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp
注意下圖中的兩個回車,開始我就等了好久沒有反應,檢視專案沒有,
這裡的回車大概意思是預設DgroupId和DartifactId。
image.png

image.png
然後開啟上面命令列中的地址,看到如下檔案內容說明專案生成成功。

image.png
IDEA開啟並不全專案結構如下。
image.png

接下來配置tomcat.
image.png

image.png

配置好了開啟 localhost:8080就能看到相關效果,這裡要注意一個大坑,特別的初入Java朋友,如下圖。

image.png

老是報無效標記的錯誤。網上找了大圈都不符合我的錯誤。最後我下載了jdk1.8版本就解決了,問題就是idea 和jdk 9.0在專案中出現衝突了。問題解決了我也沒有去深究,估計還有其他問題。當時各種問題排除了,程式碼檢查了N遍,萬萬沒想到是jdk的錯誤。

pom.xml

基礎業務編寫

接下來就是跟著教程一步一步的寫。包括dto,entity,dao,service,web,控制器,檢視,test測試類,jsp的編寫。具體我就不說了,去我的github上clone下來開啟看看就明白了或者去看教程吧

image.png

初步效果

編寫完效果如下。
image.png

image.png

swagger整合

其他的程式碼教程上有,最後重點講一下swagger的整合。
首先當然是去下載swagger,然後引入專案,然後修改index.html裡面的url為http://localhost:8080/api-docs
image.png

pom引入jar包。Swagger獲取api後是以json形式返回資料給Swagger ui,這裡需要引入jackson的相關包

    <!--swagger-->
    <dependency>
      <groupId>com.mangofactory</groupId>
      <artifactId>swagger-springmvc</artifactId>
      <version>1.0.2</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.4.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.4.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.4.4</version>
    </dependency>

建config包,然後新建SwaggerConfig配置類

package org.seckill.config;


/**
 * Created by jiangcy on 2018/1/23.
 */


import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.EnableSwagger;
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;


@Configuration
@EnableSwagger
@EnableWebMvc
public class SwaggerConfig {
    private SpringSwaggerConfig springSwaggerConfig;
    /**
     * Required to autowire SpringSwaggerConfig
     */
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig)
    {
        this.springSwaggerConfig = springSwaggerConfig;
    }
    /**
     * Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc
     * framework - allowing for multiple swagger groups i.e. same code base
     * multiple swagger resource listings.
     */
    @Bean
    public SwaggerSpringMvcPlugin customImplementation()
    {
        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
                .apiInfo(apiInfo())
                .includePatterns(".*?");


    }


    private ApiInfo apiInfo()
    {
        ApiInfo apiInfo = new ApiInfo(
                "Swagger測試",
                "測試查詢使用者",
                "開發者: Changxin L",
                "[email protected]",
                "MIT License",
                "/LICENSE");
        return apiInfo;
    }
}

然後我們在配置類裡面配置一下靜態資源的對映路徑。
image.png

    <!-- 將 springSwaggerConfig載入到spring容器 -->
    <bean     class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
    <!-- 將自定義的swagger配置類載入到spring容器 -->
    <bean class="org.seckill.config.SwaggerConfig" />

    <mvc:resources mapping="/swagger/**" location="/WEB-INF/swagger/"/>


    <!-- 定義無需Controller的url<->view直接對映 -->
    <mvc:view-controller path="/" view-name="../WEB-INF/swagger/index"/>

swagger 效果

如果上述操作準確無誤的話,那麼你將會看到如下介面:

image.png

AdminLTE 以其他

AdminLTE 引入就更簡單了,不需要jar包,只需要引入靜態資源就可以了。
所以就不做累述了,需要的可以clone專案來看下。

image.png

image.png

image.png

image.png

image.png

image.png

github

相關推薦

Java併發系統APISSM框架整合swaggerAdminLTE

初衷與整理描述 Java高併發秒殺系統API是來源於網上教程的一個Java專案,也是我接觸Java的第一個專案。本來是一枚c#碼農,公司計劃部分業務轉java,於是我利用業務時間自學Java才有了本文,本來接觸之初聽別人說,c#要轉java很容易,我也信

SpringBoot實現Java併發系統併發優化

秒殺系統架構的設計和優化分析,以我一個小菜雞,目前是說不出來的o(╥﹏╥)o。 因此呢,我這裡僅從本專案已經實現的優化來介紹一下: 本專案中做到了以下優化: 秒殺介面採用md5加密方式防刷。 訂單表使用聯合主鍵方式,限制一個使用者只能購買該商品一次。 配合Spring事務

SpringBoot實現Java併發系統Web層開發(三)

接著上一篇文章:SpringBoot實現Java高併發之Service層開發,今天我們開始講SpringBoot實現Java高併發秒殺系統之Web層開發。 Web層即Controller層,當然我們所說的都是在基於Spring框架的系統上而言的,傳統的SSH專案

SpringBoot實現Java併發系統Service層開發(二)

繼上一篇文章:SpringBoot實現Java高併發秒殺系統之DAO層開發 我們建立了SpringBoot專案並熟悉了秒殺系統的表設計,下面我們將講解一下秒殺系統的核心部分:Service業務層的開發。 Service層又稱為業務層,在Spring階段主要是由@

SpringBoot實現Java併發系統DAO層開發(一)

秒殺系統在如今電商專案中是很常見的,最近在學習電商專案時講到了秒殺系統的實現,於是打算使用SpringBoot框架學習一下秒殺系統(本專案基於慕課網的一套免費視訊教程:Java高併發秒殺API,視訊教程中講解的很詳細,非常感謝這位講師)。也是因為最近學習了Spr

Java併發系統(一)

本文內容整理自慕課網上的一套免費教學視訊–Java高併發秒殺API。課程的內容包括了秒殺業務分析、開發專案的Dao層、Service層以及Web層。其中使用的技術框架有:Spring、SpringMVC、MyBatis、Redis、Boostrap、jQu

Java併發系統(二)

本文主要對秒殺系統在大併發的場景下效能瓶頸的做一個分析,以及秒殺系統的優化實現。秒殺系統的業務分析和系統實現,可以參考上一篇文章 Java高併發秒殺系統(一) 1.秒殺系優化分析 下圖列出秒殺的系統流程,其中紅色部分是可能發生高併發的地方,綠色則表

慕課網-java併發api併發優化-總結

1.架構優化 2.spring宣告式事務 宣告式事務:http://www.open-open.com/lib/view/open1414310646012.html 配置並使用Spring宣告式事務 在spring-service.xml中新增上配置事務管理器 <

Java併發APIservice層實現(二)

二 service層實現 1.內容 站在使用者的角度設計介面 三個方向 :方法粒度,引數,返回型別 2.程式碼 SeckillService package org.seckill.service; import java.util.L

Java併發API(二)Service層

1. 設計前的分析 分層的必要性 DAO層工作演變為:介面設計+SQL編寫(不需要其他雜七雜八的功能) 程式碼和SQL的分離,方便review(瀏覽) DAO拼接等邏輯在Service層完成(DAO只需負責SQL語句,其他都由Servi

Java併發API併發優化(四)

四 高併發優化 1.分析 1.詳情頁 部署到cdn上,這樣使用者訪問的是cdn不是伺服器了。 使用者在上網時通過運營商訪問最近的都會網路,都會網路訪問主幹網。 2.獲取系統時間 不用優化 訪問一次記憶體大概 10ns 無法使用cdn,適合伺服

JAVA併發APIDAO層】課程筆記

最近在慕課網上學習了【JAVA高併發秒殺API】系列課程,在此整理課程內容! 課程收穫:1、學習瞭如何通過maven建立web專案,pom.xml 檔案依賴管理。                

Java併發API(三)Web層

1. 設計前的分析 Web層內容相關 前端互動設計 Restful規範 SpringMVC Bootstrap + jQuery 前端頁面流程 詳情頁流程邏輯 為什麼要獲取標準系統時間(伺服器的時間

Java併發API(四)併發優化

1. 高併發優化分析 關於併發 併發性上不去是因為當多個執行緒同時訪問一行資料時,產生了事務,因此產生寫鎖,每當一個獲取了事務的執行緒把鎖釋放,另一個排隊執行緒才能拿到寫鎖,QPS(Query Per Second每秒查詢率)和事務執行的時間

Java開發面試:併發系統如何設計優化

      如今處在一個大資料時代,應屆生找工作面試高階Java開發工程師時,經常會被問一些和大資料相關的問題,比如大資料處理問題、高併發處理問題、資料優化問題等,筆者曾經遇到兩個比較經典的問題,高併發秒殺系統的設計優化問題和大資料檔案排序問題。在這裡總結了高併發秒殺系統

2017.4.26 慕課網--Java 併發API(一)

Java高併發秒殺API系列(一)                  -----------------業務分析及Dao層 第一章 課程介紹 1.1 內容介紹及業務分析 (1)課程內容 1 SSM框架的整合使用 2 秒殺類系統需求理解和實現 3 常用技術解決高併發問題 (

JAVA併發API專案的學習筆記

設計Restful介面 SpringMVC整合Spring 在web.xml中配置DispatcherServlet建立web包建立spring-web.xml配置檔案 在spring-web.xml進行SpringMVC的配置 開啟SpringMVC註解模式servl

SSM專案實戰(一)--- 併發系統DAO層

專案為慕課網上 搞定Java SSM框架開發的綜合案例–實現一個秒殺系統案例。 1.首先搭建專案 使用Maven構建來管理依賴項,pom.xml檔案: 此pom.xml可作為大多數ssm專案依賴的參考 <project xmlns="http:

【備忘】Java高效能併發系統實戰視訊教程

1-1 java高併發商城秒殺優化導學.mp41-2 專案環境搭建(Eclipse).mp41-3 專案環境搭建(IDEA).mp41-4 整合mybatis.mp41-5 安裝redis.mp41-6 整合redis上.mp41-7 整合redis中.mp41-8 整合r

併發系統架構設計 · 搶購、微信紅包、一元奪寶

秒殺業務在各業務中已然非常流行,這裡我將網際網路行業中的秒殺定義為:在非常短的時間內,將一件商品分成多份進行購買的行為。微信搶紅包、一元奪寶、雙11大促搶購等業務本質上都可視作秒殺業務。而最近大熱的搶紅包的難度在於這是和錢打交道的秒殺場景,對於事務的要求性更高。秒殺業務的