Java高并发秒杀系统API是来源于网上教程的一个Java项目,慕课网地址:https://www.imooc.com/learn/587。 也是我接触Java的第一个项目。原本是一枚c#码农,公司计划部分业务转java,因而我利用业务时间自学Java才有了本文,原本接触之初听别人说,c#要转java很容易,我也信了,可是真正去学习的时候仍是踩了无数个坑,好在朋友有几个作安卓的,向他们讨教了一些经验,可是他们作安卓的和web又是两个方向,因而继续一我的默默采坑避雷之旅,首先上手的是下面这个Java高并发秒杀系统API。html
学习java的初衷一个是公司转行,二是本身也想学学看,增长下技术的厚度,多了解下不一样编程语言,不一样实现方式。融会贯通,才能打通任督二脉。以前也看过python的东西,可是兴趣不大,Java毕竟生态很好,各类大神不少,每一个语言也有不一样的优缺点,多了解有利于自身发展。java
关于这个秒杀系统园子已经有几位大神写过了相关的文章,其实本不想献丑的,权且看成学习笔记看吧,重点讲的是在这个系统之上集成swagger和AdminLTE,为何集成它们呢,由于我已经在c#.net项目里面作过相关的内容,
ABP+AdminLTE+Bootstrap Table权限管理系统一期 ,哈哈,自我营销一下,有兴趣的朋友能够看一下顺便点个赞再走?
原本觉得swagger ui和AdminLTE集成会很简单的,可是动手去作的时候发现了不少问题,因为我以前就是抱着先写一个web项目再说的初衷去作的,作完以后确实发现了不少问题,其实最重要的问题就是基础不牢,地动山摇,写完这篇文章以后,我决定要重基础学着来,深度学习一下。包括但不限于像tomcat,servlet,Webservice,MyBatis,Maven,spring,spring boot,spring cloud。python
废话很少说,开整。关于Java开发环境的配置我就不扯了,网上教程一大堆,说下Maven的配置,首先去官网下载http://maven.apache.org/download.cgi
而后是系统变量的配置
Path配置
git
而后win+R快捷键cmd进入dos窗口,输入命令,mvn -v(注意中间有个空格),回车运行后能够看见maven版本maven home表示安装成功github
最后在命令行中输入如下命令:mvn archetype:generate -DgroupId=cn.codingxiaxw.seckill -DartifactId=seckill -Dpackage=cn.codingxiaxw.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp
注意下图中的两个回车,开始我就等了很久没有反应,查看项目没有,
这里的回车大概意思是默认DgroupId和DartifactId。
web
而后打开上面命令行中的地址,看到以下文件内容说明项目生成成功。spring
IDEA打开并不全项目结构以下。
apache
接下来配置tomcat.
编程
配置好了打开 localhost:8080就能看到相关效果,这里要注意一个大坑,特别的初入Java朋友,以下图。json
总是报无效标记的错误。网上找了大圈都不符合个人错误。最后我下载了jdk1.8版本就解决了,问题就是idea 和jdk 9.0在项目中出现冲突了。问题解决了我也没有去深究,估计还有其余问题。当时各类问题排除了,代码检查了N遍,万万没想到是jdk的错误。
而后就是配置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,而后引入项目,而后修改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"/>
若是上述操做准确无误的话,那么你将会看到以下界面:
AdminLTE 引入就更简单了,不须要jar包,只须要引入静态资源就能够了。
因此就不作累述了,须要的能够clone项目来看下。
github地址:https://github.com/Jimmey-Jiang/seckill