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