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


然后是系统变量的配置

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与github地址

然后就是配置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",
                "[email protected]",
                "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项目来看下。

原文地址:https://www.cnblogs.com/anyushengcms/p/8350973.html

时间: 2024-10-06 13:03:56

Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE的相关文章

2017.4.26 慕课网--Java 高并发秒杀API(一)

Java高并发秒杀API系列(一) -----------------业务分析及Dao层 第一章 课程介绍 1.1 内容介绍及业务分析 (1)课程内容 1 SSM框架的整合使用 2 秒杀类系统需求理解和实现 3 常用技术解决高并发问题 (2)SSM框架 (3)为何选择秒杀系统 1 秒杀系统具有典型的"事务"特性 2 秒杀/红包类需求越来越常见 3 面试常用问题 1.3 项目效果演示 第二章 梳理所有技术和搭建工程 2.1 相关技术介绍 2.2 创建项目和依赖 第三章 秒杀业务分析 3.

Java高并发秒杀API之业务分析与DAO层

课程介绍 高并发和秒杀都是当今的热门词汇,如何使用Java框架实现高并发秒杀API是该系列课程要研究的内容.秒杀系列课程分为四门,本门课程是第一门,主要对秒杀业务进行分析设计,以及DAO层的实现.课程中使用了流行的框架组合SpringMVC+Spring+MyBatis,还等什么,赶快来加入吧! 第1章 课程介绍 本章介绍秒杀系统的技术内容,以及系统演示.并介绍不同程度的学员可以学到什么内容. 第2章 梳理所有技术和搭建工程 本章首先介绍秒杀系统所用框架和技术点,然后介绍如何基于maven搭建项

imooc课程:Java高并发秒杀API 记录

Java高并发秒杀API之业务分析与DAO层 Java高并发秒杀API之Service层 Java高并发秒杀API之web层 Java高并发秒杀API之高并发优化 除了并发部分外的这个web开发的总结:https://www.imooc.com/video/11737 springmvc运行流程 BOOTSTRAP 和 JS 的使用技巧.(模块化.不混乱.抽取字典方便修改) JQ插件(countDown && cookie 等) 原文地址:https://www.cnblogs.com/a

高并发秒杀系统--课程总结与思考

[高并发秒杀系统的开发流程及技术要点] DAO层 1.数据库设计和实现,手写DDL 2.Mybatis理解和使用技巧,主配置,XML中SQL的编写 3.Mybatis与Spring的整合,包扫描,DAO实现,别名识别 Servcie层 4.业务接口的设计和封装,使用者角度设计接口 5.SpringIOC配置技巧,注解+XML 6.Spring声明式是事务使用和理解 Web层 7.Restful接口运用 8.SpringMVC的使用技巧 9.前端交互分析过程 10.Bootstrap和JS的使用,

全流程开发 GO实战电商网站高并发秒杀系统

获取资源点击这里:全流程开发 GO实战电商网站高并发秒杀系统 第1章 课程介绍[学前须知] 本章对这门课程进行说明,包括:秒杀系统涉及模块的介绍,秒杀核心的知识点的介绍,课程的学习规划等. 1-1 课程介绍试看 第2章 需求整理&系统设计 [明确需求] 本章对秒杀系统整体需求进行梳理,明确系统具体需求,讲解系统原型设计工具的使用,并结合秒杀系统进行整体架构设计. 2-1 需求分析 2-2 系统架构设计 2-3 [总结&扩展]需求整理&系统设计 2-4 [勤于思考,夯实学习成果]阶段

Java高并发秒杀API之web层

第1章 设计Restful接口 1.1前端交互流程设计 1.2 学习Restful接口设计 什么是Restful?它就是一种优雅的URI表述方式,用来设计我们资源的访问URL.通过这个URL的设计,我们就可以很自然的感知到这个URL代表的是哪种业务场景或者什么样的数据或资源.基于Restful设计的URL,对于我们接口的使用者.前端.web系统或者搜索引擎甚至是我们的用户,都是非常友好的. 第2章 SpringMVC整合spring 2.1 SpringMvc理论 蓝色部分是需要我们自己开发的

Java高并发秒杀API之高并发优化

---恢复内容开始--- 第1章 秒杀系统高并发优化分析   1.为什么要单独获得系统时间 访问cdn这些静态资源不用请求系统服务器 而CDN上没有系统时间,需要单独获取,获取系统时间不用优化,只是new了一个日期对象返回,java访问一次内存(cacheline)的时间大概为10ns,即一秒可可访问一亿次 倒计时放在js端,在浏览器中,不会对服务器端造成影响,也不用优化 2.秒杀地址接口分析 秒杀未开启,秒杀开启,秒杀结束,秒杀地址返回的数据不同,不是静态的,无法使用CDN缓存 但它适合使用r

php高并发秒杀系统的搭建总结思考(一)

秒杀系统大致分为三大块.客户端,服务器,后台管理.秒杀系统具有大流量高并发的特点. 对于web前端的处理,一般是页面静态化+CDN分布式缓存. 因为静态页面的处理速度是最快的.假设单台服务器nginx,1秒内可以处理的静态页面请求是1w,处理php程序可能是500每秒.这样在效率上就差很多.原因是php属于动态语言,服务器需要解释运行,这当中可能大量的I/O操作,加载扩展等.这就导致处理的时间比较长. 所以对于秒杀产品,一般都是在活动快要开始时,上线静态页面. 原文地址:https://blog

高并发秒杀系统--Service事务管理与继承测试

[Spring IoC的类型及应用场景]  [Spring事务使用方式] [Spring事务的特性] [Spring事务回滚的理解] [Service声明式事务的配置] 1.配置事务管理器 2.配置基于注解的声明式事务 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xs