日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Java秒杀系统实战系列~构建SpringBoot多模块项目

發布時間:2024/3/13 windows 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java秒杀系统实战系列~构建SpringBoot多模块项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:本篇博文是“Java秒殺系統實戰系列文章”的第二篇,主要分享介紹如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中間件構建一個多模塊的項目,即“秒殺系統”!。

內容傳統的基于IDEA構建SpringBoot的項目,是直接借助Spring Initializr插件進行構建,但是這種方式在大部分情況下,只能充當“單模塊”的項目,并不能很好的做到“分工明確、職責清晰”的分層原則!

故而為了能更好的管理項目代碼以及盡量做到“模塊如名”,快速定位給定的類文件或者其他文件的位置,下面我們將基于IDEA、借助Maven構建多模塊的項目,其中,其構建的思路如下圖所示:

詳細的構建過程在本文就不贅述了!文末有提供源碼的地址以及構建過程的視頻教程!下面重點介紹一下跟“Java秒殺系統”相關的構建步驟。

(1)如下圖所示為最終構建成功的項目的整體目錄結構:? ?

?

從該目錄結構中可以看出,該項目為一個“聚合型項目”,其中,model模塊依賴api模塊,server模塊依賴model模塊,層層依賴!最終在server模塊實現“大匯總”,即server模塊為整個項目的核心關鍵所在,像什么“配置文件”、“入口啟動類”啥的都在這個模塊中!

而且,各個模塊的職責是不一樣的,分工也很明確,就像model模塊,一般人看了就知道這里放的東西應該是跟mybatis或者跟數據庫mysql相關的類文件與配置文件等等。

構建好相應的模塊之后,就需要往相應的模塊添加依賴,即只需要在pom.xml中加入相應的依賴即可,在這里就不貼出來了!

(2)在這里主要貼一下server模塊入口啟動類MainApplication的代碼,如下所示:

@SpringBootApplication @ImportResource(value = {"classpath:spring/spring-jdbc.xml"}) @MapperScan(basePackages = "com.debug.kill.model.mapper") @EnableScheduling public class MainApplication extends SpringBootServletInitializer{@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(MainApplication.class);}public static void main(String[] args) {SpringApplication.run(MainApplication.class,args);} }

其中,該啟動類將加載配置文件spring-jdbc.xml(數據庫鏈接信息的配置文件)!

構建完成之后,可以將整個項目采用外置的Tomcat跑起來,運行過程中,觀察控制臺Console的輸出信息,如果沒有報錯信息,則代表整個項目的搭建是沒有問題的!如果出現了問題,建議自己先研究一番并嘗試去解決掉!如果仍舊不能解決,可以加文末提供的聯系方式進行解決!

(4)除此之外,為了讓整個項目在前后端分離開發的情況下,前后端的接口交互更加規范(比如響應信息的規范等等),在這里我們采用了通用的一個狀態碼枚舉類StatusCode?跟 一個通用的響應結果類BaseResponse,用于后端在返回響應信息給到前端時進行統一封裝。

狀態碼枚舉類StatusCode的源代碼如下所示:

public enum StatusCode {Success(0,"成功"),Fail(-1,"失敗"),InvalidParams(201,"非法的參數!"),UserNotLogin(202,"用戶沒登錄"),;private Integer code; //狀態碼codeprivate String msg; //狀態碼描述信息msgStatusCode(Integer code, String msg) {this.code = code;this.msg = msg;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;} }

響應結果類BaseResponse的源代碼如下所示:

public class BaseResponse<T> {private Integer code; //狀態碼codeprivate String msg; //狀態碼對應的描述信息msgprivate T data; //響應數據public BaseResponse(Integer code, String msg) {this.code = code;this.msg = msg;}public BaseResponse(StatusCode statusCode) {this.code = statusCode.getCode();this.msg = statusCode.getMsg();}public BaseResponse(Integer code, String msg, T data) {this.code = code;this.msg = msg;this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;} }

在后面使用的過程中,大家會發現,這個BaseResponse和StatusCode的結合使用會帶來很大的方便,而且,大家仔細觀察,會發現這種模式跟“HTTP的響應模型”很像!

(5)最后,為了測試整個項目的可用性以及BaseResponse和StatusCode的使用,下面建立一個BaseController控制器,并在其中開發一個簡單的請求方法,如下所示:

@Controller @RequestMapping("base") public class BaseController {private static final Logger log= LoggerFactory.getLogger(BaseController.class);/*** 標準請求-響應數據格式*/@RequestMapping(value = "/response",method = RequestMethod.GET)@ResponseBodypublic BaseResponse response(String name){BaseResponse response=new BaseResponse(StatusCode.Success);if (StringUtils.isBlank(name)){name="這是welcome!";}response.setData(name);return response;} }

(6)將整個運行起來,如果控制臺沒有相應的報錯信息,則打開Postman,并發起相應的請求:http://localhost:8092/kill/base/response?name=Java秒殺系統?(端口跟上下文是自己設置的!),可以觀察響應信息,如下所示:

(7)除此之外,這個Java秒殺系統項目還支持前端發起請求時,后端協助進行頁面的跳轉,其中本項目使用的模板引擎為Jsp,跳轉后的頁面位于/WEB-INF/views/目錄下(這主要是通過在application.properties文件配置實現的)。

如下代碼為在BaseController開發一個跳轉到welcome頁面的方法,其代碼如下所示:

/*** 跳轉頁面-跳轉成功攜帶 name 參數到 welcome頁面中* @param name* @param modelMap* @return*/ @GetMapping("/welcome") public String welcome(String name, ModelMap modelMap){if (StringUtils.isBlank(name)){name="這是welcome!";}modelMap.put("name",name);return "welcome"; }

(8)打開瀏覽器,訪問:http://localhost:8092/kill/base/welcome?name=Java秒殺系統?即可跳轉到相應的頁面!

至此,關于“Java秒殺系統”多模塊項目的構建已經完成了!值得一提的是,這一多模塊項目可以適用于其他任何SpringBoot業務的應用場景,可以將其作為一個奠基項目來使用。

接下來,我們就可以開始干一些壞事了,即由此開啟“Java秒殺系統”的整體實戰之路!

補充

1、目前,這一秒殺系統的整體構建與代碼實戰已經全部完成了,完整的源代碼數據庫地址可以來這里下載:https://gitee.com/steadyjack/SpringBoot-SecondKill??記得Fork跟Star啊!!!

2、由于相應的博客的更新可能并不會很快,故而如果有想要快速入門以及實戰整套系統的,可以考慮聯系Debug獲取這一“Java秒殺系統”的完整視頻教程(課程是收費的!),當然,大家也可以點擊下面這個鏈接 https://gitee.com/steadyjack/SpringBoot-SecondKill 聯系Debug或者加入相應的技術交流群進行交流!

3、實戰期間有任何問題都可以留言或者與Debug聯系、交流;技術交流群:605610429(Java實戰基地交流1群)

4、最后,不要忘記了關注一下Debug的技術微信公眾號:

?

?

總結

以上是生活随笔為你收集整理的Java秒杀系统实战系列~构建SpringBoot多模块项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。