高并發(fā)秒殺系統(tǒng)API之SSM集成swagger與AdminLTE

初衷與整理描述

Java高并發(fā)秒殺系統(tǒng)API是來源于網(wǎng)上教程的一個(gè)Java項(xiàng)目,也是我接觸Java的第一個(gè)項(xiàng)目。本來是一枚c#碼農(nóng),公司計(jì)劃部分業(yè)務(wù)轉(zhuǎn)java,于是我利用業(yè)務(wù)時(shí)間自學(xué)Java才有了本文,本來接觸之初聽別人說,c#要轉(zhuǎn)java很容易,我也信了,但是真正去學(xué)習(xí)的時(shí)候還是踩了無數(shù)個(gè)坑,好在朋友有幾個(gè)做安卓的,向他們討教了一些經(jīng)驗(yàn),但是他們做安卓的和web又是兩個(gè)方向,于是繼續(xù)一個(gè)人默默采坑避雷之旅,首先上手的是下面這個(gè)Java高并發(fā)秒殺系統(tǒng)API。

學(xué)習(xí)java的初衷一個(gè)是公司轉(zhuǎn)行,二是自己也想學(xué)學(xué)看,增加下技術(shù)的厚度,多了解下不同編程語言,不同實(shí)現(xiàn)方式。融會(huì)貫通,才能打通任督二脈。之前也看過python的東西,但是興趣不大,Java畢竟生態(tài)很好,各種大神很多,每個(gè)語言也有不同的優(yōu)缺點(diǎn),多了解有利于自身發(fā)展。

關(guān)于這個(gè)秒殺系統(tǒng)園子已經(jīng)有幾位大神寫過了相關(guān)的文章,其實(shí)本不想獻(xiàn)丑的,權(quán)且當(dāng)作學(xué)習(xí)筆記看吧,重點(diǎn)講的是在這個(gè)系統(tǒng)之上集成swagger和AdminLTE,為什么集成它們呢,因?yàn)槲乙呀?jīng)在c#.net項(xiàng)目里面做過相關(guān)的內(nèi)容,
ABP+AdminLTE+Bootstrap Table權(quán)限管理系統(tǒng)一期 ,哈哈,自我營銷一下,有興趣的朋友可以看一下順便點(diǎn)個(gè)贊再走?
本來以為swagger ui和AdminLTE集成會(huì)很簡單的,但是動(dòng)手去做的時(shí)候發(fā)現(xiàn)了很多問題,由于我之前就是抱著先寫一個(gè)web項(xiàng)目再說的初衷去做的,做完之后確實(shí)發(fā)現(xiàn)了很多問題,其實(shí)最重要的問題就是基礎(chǔ)不牢,地動(dòng)山搖,寫完這篇文章之后,我決定要重基礎(chǔ)學(xué)著來,深度學(xué)習(xí)一下。包括但不限于像tomcat,servlet,Webservice,MyBatis,Maven,spring,spring boot,spring cloud。

上手

廢話不多說,開整。關(guān)于Java開發(fā)環(huán)境的配置我就不扯了,網(wǎng)上教程一大堆,說下Maven的配置,首先去官網(wǎng)下載http://maven.apache.org/download.cgi

image.png

image.png

然后是系統(tǒng)變量的配置
image.png

Path配置
image.png

然后win+R快捷鍵cmd進(jìn)入dos窗口,輸入命令,mvn -v(注意中間有個(gè)空格),回車運(yùn)行后可以看見maven版本maven home表示安裝成功

Maven 自動(dòng)生成項(xiàng)目

最后在命令行中輸入以下命令:mvn archetype:generate -DgroupId=cn.codingxiaxw.seckill -DartifactId=seckill -Dpackage=cn.codingxiaxw.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp
注意下圖中的兩個(gè)回車,開始我就等了好久沒有反應(yīng),查看項(xiàng)目沒有,
這里的回車大概意思是默認(rèn)DgroupId和DartifactId。


image.png
image.png

然后打開上面命令行中的地址,看到如下文件內(nèi)容說明項(xiàng)目生成成功。

image.png

IDEA打開并不全項(xiàng)目結(jié)構(gòu)如下。


image.png

接下來配置tomcat.


image.png
image.png

配置好了打開 localhost:8080就能看到相關(guān)效果,這里要注意一個(gè)大坑,特別的初入Java朋友,如下圖。

image.png

老是報(bào)無效標(biāo)記的錯(cuò)誤。網(wǎng)上找了大圈都不符合我的錯(cuò)誤。最后我下載了jdk1.8版本就解決了,問題就是idea 和jdk 9.0在項(xiàng)目中出現(xiàn)沖突了。問題解決了我也沒有去深究,估計(jì)還有其他問題。當(dāng)時(shí)各種問題排除了,代碼檢查了N遍,萬萬沒想到是jdk的錯(cuò)誤。

pom.xml與github地址

然后就是配置pom.xml,代碼很長我就不貼出來了,直接去我的github pom.xml看吧:https://github.com/Jimmey-Jiang/seckill/blob/master/seckill/pom.xml,這里包含了后面要說的swaggerui 的引入。

image.png

基礎(chǔ)業(yè)務(wù)編寫

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

image.png

初步效果

編寫完效果如下。


image.png
image.png

swagger集成

其他的代碼教程上有,最后重點(diǎn)講一下swagger的集成。
首先當(dāng)然是去下載swagger,然后引入項(xiàng)目,然后修改index.html里面的url為http://localhost:8080/api-docs。

image.png

pom引入jar包。Swagger獲取api后是以json形式返回?cái)?shù)據(jù)給Swagger ui,這里需要引入jackson的相關(guān)包

    <!--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測試",
                "測試查詢用戶",
                "開發(fā)者: Changxin L",
                "348686686@gmail.com",
                "MIT License",
                "/LICENSE");
        return apiInfo;
    }
}

然后我們在配置類里面配置一下靜態(tài)資源的映射路徑。


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 效果

如果上述操作準(zhǔn)確無誤的話,那么你將會(huì)看到如下界面:

image.png

AdminLTE 以其他

AdminLTE 引入就更簡單了,不需要jar包,只需要引入靜態(tài)資源就可以了。
所以就不做累述了,需要的可以clone項(xiàng)目來看下。

image.png
image.png
image.png
image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容