javascript
简单介绍基于Spring Boot的项目骨架使用
前言
從大學(xué)開(kāi)始接觸 java 后臺(tái)開(kāi)發(fā),到后來(lái)了解了更多的編程語(yǔ)言的開(kāi)發(fā)。發(fā)現(xiàn) java 的開(kāi)發(fā)可以說(shuō)是相較而言很復(fù)雜的了,光是 Spring MVC 的配置要是沒(méi)有經(jīng)歷系統(tǒng)的學(xué)習(xí),可能就能勸退一波了。所以衍生而來(lái)的是如 mybatis-generator 這類代碼生成插件,即根據(jù)數(shù)據(jù)庫(kù)表結(jié)構(gòu)來(lái)生成相應(yīng)的 po 層、dao 層、以及 dao 層的映射。相較而言是比較簡(jiǎn)便的使用了,但是每次還得寫(xiě) service 層和 controller 層的一些基礎(chǔ)代碼。但是最近在公眾號(hào)上發(fā)現(xiàn)一個(gè)更好用的 Spring Boot 的項(xiàng)目骨架。畢竟大佬給搭的骨架和我這種菜雞搭的無(wú)論從代碼結(jié)構(gòu)或者簡(jiǎn)便性上來(lái)說(shuō)都是沒(méi)法比的哈哈。項(xiàng)目介紹地址為: https://mp.weixin.qq.com/s/Cb4dSVlhNqsHQRp_PECF1w 。github 地址為: https://github.com/lihengming/spring-boot-api-project-seed 。
通過(guò)使用大佬的項(xiàng)目骨架,一方面是代碼邏輯、架構(gòu)更優(yōu)美,使用代碼生成器生成代碼后會(huì)創(chuàng)建 model、dao、service、web 等包。所以我們需要做的就是設(shè)計(jì)好表結(jié)構(gòu)后,生成代碼,然后編寫(xiě)控制器中的邏輯處理的代碼即可。
使用步驟
第一步:新建一個(gè) Spring 項(xiàng)目
第二步:到 github 上把項(xiàng)目下載下來(lái)
第三步:將需要的部分整合到我們的項(xiàng)目中
因?yàn)槲蚁胝系皆械捻?xiàng)目中,所以我把這個(gè)開(kāi)源項(xiàng)目的中我需要的東西 copy 到我的項(xiàng)目中。當(dāng)然也可以直接在這個(gè)開(kāi)源項(xiàng)目上改,將包名啥的改成自己的即可。
第四步:修改部分內(nèi)容
- pom.xml
去除導(dǎo)入 MySQL JDBC 驅(qū)動(dòng)中的這一行
<scope>runtime</scope>- MybatisConfigurer、WebMvcConfigurer
修改原有導(dǎo)入類的包名為當(dāng)前正確的包名。
- ProjectConstant
修改 BASE_PACKAGE
- application-dev.properties
數(shù)據(jù)源配置,請(qǐng)修改為項(xiàng)目的實(shí)際配置
修改 com.mysql.jdbc.Driver為 com.mysql.cj.jdbc.Driver
- CodeGenerator
修改數(shù)據(jù)庫(kù)配置、mysql 驅(qū)動(dòng)、要生成代碼的表名
第五步:生成代碼
運(yùn)行 CodeGenerator
第六步:愉快的寫(xiě)代碼
注意這邊 mybatis 的 dao 層用的接口是 core 中的。
使用過(guò)程中找下提供的接口即可。
統(tǒng)一API響應(yīng)結(jié)果封裝
對(duì)響應(yīng)結(jié)果進(jìn)行了封裝,無(wú)論是成功或者其他狀態(tài),都會(huì)使接口更規(guī)范。
攔截器使用
- 接口簽名認(rèn)證攔截器(項(xiàng)目給出)
- 新增攔截器只需調(diào)用registry.addInterceptor,然后new一個(gè)HandlerInterceptorAdapter,并根據(jù)需求實(shí)現(xiàn)其中的preHandle方法(預(yù)處理)、postHandle方法(返回處理),afterCompletion方法(后處理)。
假設(shè)做一個(gè)登陸界面的攔截器。
registry.addInterceptor(new HandlerInterceptorAdapter() {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//驗(yàn)證請(qǐng)求的地址是否是登錄地址 如果是繼續(xù)往下執(zhí)行String uri=request.getRequestURI();uri = uri.substring(uri.lastIndexOf("/")+1);if(uri.equals("login")){return true;}//驗(yàn)證session中是否有用戶存在 如果有 繼續(xù)執(zhí)行if(request.getSession().getAttribute("user")!=null){return true;}//執(zhí)行跳轉(zhuǎn)到登錄頁(yè)面response.sendRedirect(request.getContextPath()+"/main/login");return false;} });效果如下:
靜態(tài)資源映射
項(xiàng)目骨架中沒(méi)有加這個(gè),如果是要開(kāi)發(fā)web項(xiàng)目的話需要加一個(gè)靜態(tài)資源的映射,并且修改攔截器的使用,避免攔截了靜態(tài)資源
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {//將訪問(wèn)/static/** 的路由映射到classpath:/static/ 目錄下registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/static/"); }攔截器判斷是否為訪問(wèn)靜態(tài)資源
//判斷請(qǐng)求是否為靜態(tài)資源 int result = uri.indexOf("static/"); if(result != -1){return true; }總結(jié)
以上是生活随笔為你收集整理的简单介绍基于Spring Boot的项目骨架使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 攻防世界-web-unfinish-从0
- 下一篇: Spring Boot项目无法找到get