Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE
初衷与整理描述
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


然后是系统变量的配置

Path配置

然后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。


然后打开上面命令行中的地址,看到如下文件内容说明项目生成成功。

IDEA打开并不全项目结构如下。

接下来配置tomcat.


配置好了打开 localhost:8080就能看到相关效果,这里要注意一个大坑,特别的初入Java朋友,如下图。

老是报无效标记的错误。网上找了大圈都不符合我的错误。最后我下载了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 的引入。

基础业务编写
接下来就是跟着教程一步一步的写。包括dto,entity,dao,service,web,控制器,视图,test测试类,jsp的编写。具体我就不说了,去我的github上clone下来打开看看就明白了,或者去看教程吧。

初步效果
编写完效果如下。


swagger集成
其他的代码教程上有,最后重点讲一下swagger的集成。
首先当然是去下载swagger,然后引入项目,然后修改index.html里面的url为http://localhost:8080/api-docs。

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;
}
}
然后我们在配置类里面配置一下静态资源的映射路径。

<!-- 将 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 效果
如果上述操作准确无误的话,那么你将会看到如下界面:

AdminLTE 以其他
AdminLTE 引入就更简单了,不需要jar包,只需要引入静态资源就可以了。
所以就不做累述了,需要的可以clone项目来看下。






github
github地址:https://github.com/Jimmey-Jiang/seckill
Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE的更多相关文章
- Java高并发秒杀系统【观后总结】
项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目中学到了什么玩意.. 该项目源码对应的gitHub地址(由观看其视频的人编写,并 ...
- Java高并发秒杀API之业务分析与DAO层
根据慕课网上关于java高并发秒杀API的课程讲解用maven+ssm+redis实现的一个秒杀系统 参考了codingXiaxw's blog,很详细:http://codingxiaxw.cn/2 ...
- 2017.4.26 慕课网--Java 高并发秒杀API(一)
Java高并发秒杀API系列(一) -----------------业务分析及Dao层 第一章 课程介绍 1.1 内容介绍及业务分析 (1)课程内容 SSM框架的整合使用 秒杀类系统需求理解和实现 ...
- Java高并发秒杀API之Service层
Java高并发秒杀API之Service层 第1章 秒杀业务接口设计与实现 1.1service层开发之前的说明 开始Service层的编码之前,我们首先需要进行Dao层编码之后的思考:在Dao层我们 ...
- imooc课程:Java高并发秒杀API 记录
Java高并发秒杀API之业务分析与DAO层 Java高并发秒杀API之Service层 Java高并发秒杀API之web层 Java高并发秒杀API之高并发优化 除了并发部分外的这个web开发的总结 ...
- 【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了!!
写在前面 之前,我们在<[高并发]高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!>一文中,详细讲解了高并发秒杀系统的架构设计,其中,我们介绍了可以使用Redis存储秒杀商品的库存数量.很 ...
- Java高并发秒杀API之web层
第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我 ...
- Java高并发秒杀API之高并发优化
---恢复内容开始--- 第1章 秒杀系统高并发优化分析 1.为什么要单独获得系统时间 访问cdn这些静态资源不用请求系统服务器 而CDN上没有系统时间,需要单独获取,获取系统时间不用优化,只是n ...
- JAVA高并发秒杀API项目的学习笔记
一步一步的搭建JAVA WEB项目,采用Maven构建,基于MYBatis+Spring+Spring MVC+Bootstrap技术的秒杀项目学习的视频:http://www.imooc.com/l ...
随机推荐
- Linux Centos 使用 yum 安装java
centos 使用 yum 安装java 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | grep -E '^op ...
- 手机端rem如何适配_rem详解及使用方法2
作为一个前端开发人员,我们的任务是将UI设计师的图稿运用计算机语言呈现在用户面前.而现在的设备大小尺寸不一,近年来智能手机的普及更是让网页的用户大部分来源与手机,所以让不同大小的移动端屏幕都能较好的还 ...
- MySQL数据库学习: 02 —— 数据库的安装与配置
MySQL安装图解 一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup. ...
- Maven项目不打包*.hbm.xml文件
<build> <finalName>basic</finalName> <plugins> <plugin> <groupId> ...
- Building an MFC project for a non-Unicode character set is deprecated
1>------ 已启动生成: 项目: TestSdk, 配置: Debug Win32 ------1>C:\Program Files (x86)\MSBuild\Microsoft. ...
- c#实现超实用的<证件照换底色>小工具
1前言 我们在工作和生活中经常要填写一些个人资料,这时候往往需要放证件照上去,但是有时候人家要求是红底或白底,但是偏偏不巧的是你以前照了张蓝底的.这时候你想换个底色,于是在百度上一搜“证件照换 ...
- Head First设计模式之组合模式
一.定义 将对象组合成树形结构来表现"整体-部分"层次结构. 组合能让客户以一致的方法处理个别对象以及组合对象. 主要部分可以被一致对待问题. 在使用组合模式中需要注意一点也是组合 ...
- How It Works: CMemThread and Debugging Them
The wait type of CMemThread shows up in outputs such as sys.dm_exec_requests. This post is intended ...
- 极光配置-》thinkphp3.2.3
1,小白我搞了几天,终于得到了这样的结果(我猜应该是成功了吧). { "body": { "sendno": "100000", " ...
- python3基础(二)
loops循环语句 一 if语句,if语句配合else使用,可以没有else. 单分支if语句 age = input('Age:') password = '67' if age == passwo ...