高并发秒杀系统API之SSM集成swagger与AdminLTE

摘要:
几位大神都写过关于秒杀系统花园的相关文章。事实上,他们不想出丑。让我们把它作为学习笔记。关键是在这个系统上集成swagger和AdminLTE。他们为什么要整合它们?因为我已经将它们集成到了C#Net项目中,ABP+AdminLTE+BootstrapTable权限管理系统第一阶段,哈哈,自我营销,感兴趣的朋友可以在离开之前查看并点击赞?Swagger集成在其他代码教程中提供。最后,关注swagger的集成。Swagger在获取api后以json的形式将数据返回给Swagger ui。在这里,我们需要介绍jackson的相关套餐˂!
初衷与整理描述

Java高并发秒杀系统API是来源于网上教程的一个Java项目,慕课网地址:https://www.imooc.com/learn/587。 也是我接触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

然后就是配置pom.xml,代码很长我就不贴出来了,直接去我的github pom.xml看吧:https://github.com/Jimmey-Jiang/seckill/blob/master/seckill/pom.xml,这里包含了后面要说的swaggerui 的引入。
image.png

基础业务编写

接下来就是跟着教程一步一步的写。包括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",
                "348686686@gmail.com",
                "MIT License",
                "/LICENSE");
        return apiInfo;
    }
}

然后我们在配置类里面配置一下静态资源的映射路径。
image.png

    <!-- 将 springSwaggerConfig加载到spring容器 -->
    <bean       />
    <!-- 将自定义的swagger配置类加载到spring容器 -->
    <bean   />
    
    <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

github地址:https://github.com/Jimmey-Jiang/seckill

免责声明:文章转载自《高并发秒杀系统API之SSM集成swagger与AdminLTE》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenGL ES 如何能看到一个物体内部和象3dmax中能只显示网格线Maven 小技巧之 自动更新你的jar包下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)

这篇文章的主题是: 依赖是什么 eclipse中的依赖 AS中的依赖(有一篇详细的文章讲得非常好,这里就不再写了http://blog.csdn.net/yy1300326388/article/details/46422939) 另外相关的话题有↓,可以自行查看: 安卓的support包的历史 AS中grandle具体的内容 怎么做一个给别人用的J...

Android直播实现 Android端推流、播放

原文地址  :http://www.cnblogs.com/endv/p/7487685.html 最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码就可实现编码、推流和取流播放,整理了一下做了一个demo...

swagger 转载:https://www.cnblogs.com/tianshifu/p/7156563.html

使用swagger 生成 Flask RESTful API  什么是REST REST(英文:Representational State Transfer,又称具象状态传输)是Roy Thomas Fielding博士于2000年在他的博士论文 中提出来的一种万维网软件架构风格,目的是便于不同软件/程序在网络(例如互联网)中互相传递信息。 REST...

Android程序报错以及解决办法

INSTALL_FAILED_OLDER_SDK Launching ‘app’ on Genymotion Google Nexus 5. Installation did not succeed. The application could not be installed: INSTALL_FAILED_OLDER_SDK The applicat...

android PopupWindow实现从底部弹出或滑出选择菜单或窗口

本实例弹出窗口主要是继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现,具体实习如下: 第一步:设计弹出窗口xml: Xml代码   <?xml version="1.0" encoding="utf-8"?>   <RelativeLayout   ...

桌面小部件开发

AppWidgetProvider是android提供实现桌面小部件的类,本质是一个广播,即BroadcastReceiver。是继承关系 开发步骤: 1.在res/layout/下新建一个XML文件,命令为widget.xml,名称和内容可以自定义 <?xml version="1.0" encoding="utf-8"?> <Lin...