日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳盡的Spring Boot多模塊開發(fā)與排坑指南

創(chuàng)建項(xiàng)目

成都創(chuàng)新互聯(lián)專注于榮昌網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供榮昌營銷型網(wǎng)站建設(shè),榮昌網(wǎng)站制作、榮昌網(wǎng)頁設(shè)計(jì)、榮昌網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造榮昌網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供榮昌網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

創(chuàng)建一個(gè) SpringBoot 項(xiàng)目非常的簡(jiǎn)單,簡(jiǎn)單到這里根本不用再提。你可以在使用 IDEA 新建項(xiàng)目時(shí)直接選擇 Spring Initlalize 創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,也可以使用 Spring 官方提供的 Spring Boot 項(xiàng)目生成頁面得到一個(gè)項(xiàng)目。

下面介紹一下使用 Spring 官方生成的方式,如果你已經(jīng)有了一個(gè) Spring Boot 項(xiàng)目,這部分可以直接跳過。

 1.  打開 https://start.spring.io/

 2.  填寫 group 和 Artifact 信息,選擇依賴(我選擇了 Spring Web 和 Lombok )。 

spring 官網(wǎng)創(chuàng)建初始項(xiàng)目

3.  點(diǎn)擊 Generate 按鈕下載項(xiàng)目。

4.  打開下載的項(xiàng)目,刪除無用的 .mvn 文件夾,mvnw 、 mvnw.cmd 、HELP.md 文件。

到這里已經(jīng)得到了一個(gè) Spring Boot 初始項(xiàng)目了,我們直接導(dǎo)入到 IDEA 中,看一眼 pom.xml 的內(nèi)容。

 
 
 
 
  1.   
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     4.0.0  
  4.       
  5.         org.springframework.boot  
  6.         spring-boot-starter-parent  
  7.         2.2.5.RELEASE  
  8.            
  9.       
  10.     com.wdbyte  
  11.     springboot-module-demo  
  12.     0.0.1-SNAPSHOT  
  13.     springboot-module-demo  
  14.     Demo project for Spring Boot  
  15.       
  16.         1.8  
  17.      
  18.       
  19.           
  20.             org.springframework.boot  
  21.             spring-boot-starter-web  
  22.           
  23.           
  24.             org.projectlombok  
  25.             lombok  
  26.             true  
  27.           
  28.           
  29.             org.springframework.boot  
  30.             spring-boot-starter-test  
  31.             test  
  32.               
  33.                   
  34.                     org.junit.vintage  
  35.                     junit-vintage-engine  
  36.                   
  37.               
  38.           
  39.       
  40.       
  41.           
  42.               
  43.                 org.springframework.boot  
  44.                 spring-boot-maven-plugin  
  45.               
  46.           
  47.       
  48.  

把目錄結(jié)構(gòu)調(diào)整成自己想要的結(jié)構(gòu),然后添加 controller 和 entity 用于測(cè)試。

項(xiàng)目目錄結(jié)構(gòu)

ProductController 類源代碼。

 
 
 
 
  1. @RestController  
  2. @RequestMapping("/product")  
  3. public class ProductController {  
  4.     /**  
  5.      * 獲取商品列表  
  6.      *  
  7.      * @return  
  8.      */  
  9.     @GetMapping("/list")  
  10.     public Map list() {  
  11.         // 模擬查詢商品邏輯  
  12.         Product product = new Product();  
  13.         product.setProductName("小米粥");  
  14.         product.setProductPrice(new BigDecimal(2.0));  
  15.         product.setProductStock(100);  
  16.         Map resultMap = new HashMap<>();  
  17.         resultMap.put("code", 000);  
  18.         resultMap.put("message", "成功");  
  19.         resultMap.put("data", Arrays.asList(product));  
  20.         return resultMap;  
  21.     }  

Product 類源代碼。

 
 
 
 
  1. @Data  
  2. public class Product {  
  3.     /** 商品名稱. */  
  4.     private String productName;  
  5.     /** 商品價(jià)格. */  
  6.     private BigDecimal productPrice;  
  7.     /** 商品庫存。*/  
  8.     private int productStock;  

模塊化

借助 IDEA 工具可以快速的把項(xiàng)目改造成 maven 多模塊,這里我們把準(zhǔn)備測(cè)試 demo 拆分為 common 和 web 兩個(gè)模塊,common 模塊存放實(shí)體類。web 模塊存放 controller 層(這里項(xiàng)目雖小,拆分只是為了演示)。話不多說,直接開始。

1.    配置主 pom.xml 打包方式 為 pom 

 
 
 
 
  1.   
  2.    
  3.             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.        4.0.0  
  5.          
  6.        pom  
  7.        ....  
  8.        .... 

2.  創(chuàng)建 common 模塊

項(xiàng)目直接 new -> module。 

創(chuàng)建模塊

選擇 maven -> next,填寫模塊名稱。 

填寫模塊名稱

繼續(xù) next 完成模塊創(chuàng)建。

3.  創(chuàng)建 web 模塊

    web 模塊的創(chuàng)建和 common 模塊如出一轍,不再贅述。完成兩個(gè)模塊的創(chuàng)建之后,你會(huì)發(fā)現(xiàn)你的主 pom.xml 文件里自動(dòng)添加了 module 部分。 

 
 
 
 
  1.   
  2.         product-common  
  3.         product-web  
  4.      

4.  移動(dòng)代碼到指定模塊

移動(dòng) Product.java 到 product-common 模塊,其他部分代碼和 resource 部分直接移動(dòng)到 product-web 模塊,移動(dòng)完后你的代碼結(jié)構(gòu)是這個(gè)樣子。 

多模塊目錄結(jié)構(gòu)

到這里,多模塊已經(jīng)拆分完成了, 但是 ProductController  代碼里的紅色警告讓你發(fā)現(xiàn)事情還沒有結(jié)束。

依賴管理

處理依賴問題

你發(fā)現(xiàn)了代碼里的紅色警告,不過你也瞬間想到了是因?yàn)榘?Product  類移動(dòng)到了 product-common 模塊,導(dǎo)致這里引用不到了。

紅色警告

然后你查看了下 product-common 模塊的 pom.xml 里的內(nèi)容。

 
 
 
 
  1.   
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.       
  5.         springboot-module-demo  
  6.         com.wdbyte  
  7.         0.0.1-SNAPSHOT  
  8.       
  9.     4.0.0  
  10.     product-common  
  11.  

機(jī)智的在 Product-web 模塊的 pom.xml 里引入 product-common,手起鍵落,輕松搞定。

 
 
 
 
  1.   
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.       
  5.         springboot-module-demo  
  6.         com.wdbyte  
  7.         0.0.1-SNAPSHOT  
  8.       
  9.     4.0.0  
  10.     product-web  
  11.       
  12.           
  13.             com.wdbyte  
  14.             product-common  
  15.           
  16.       
  17.  

滿心歡喜的你快速的點(diǎn)擊 Build->  Build Project,得到的 Error 警告刺痛了頂著黑眼圈的你。

不過你還是迅速定位了問題,查看 maven 依賴,你發(fā)現(xiàn)是因?yàn)闆]有指定 product-common 依賴的版本號(hào)。

報(bào)錯(cuò)信息

原來如此,因?yàn)闆]有指定版本號(hào),我們指定上不就完事了嘛。在最外層的主 pom.xml 中添加 添加上指定依賴和要指定的版本號(hào)。 

 
 
 
 
  1.   
  2.          
  3.              
  4.                com.wdbyte  
  5.                product-common  
  6.                0.0.1-SNAPSHOT  
  7.              
  8.          
  9.     

刷新 maven ,發(fā)現(xiàn)項(xiàng)目已經(jīng)不報(bào)錯(cuò)了,編譯成功,運(yùn)行啟動(dòng)類,熟悉的 Spring logo 又出現(xiàn)在眼前。

優(yōu)化依賴

是的,Spring Boot 應(yīng)用在改造成多模塊后成功運(yùn)行了起來,但是你貌似發(fā)現(xiàn)一個(gè)問題,模塊 common 和模塊 web 都繼承了主 pom ,主 pom 中有 Lombok 、Spring Boot Web 和  Spring Boot Test 依賴,而 common 模塊里只用到了 Lombok 啊,卻一樣繼承了 Spring Boot 其他依賴,看來還是要改造一把。

1.  只有 common 模塊用到的依賴移動(dòng)到 common 模塊。 

 
 
 
 
  1.   
  2.    
  3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  5.          
  6.            springboot-module-demo  
  7.            com.wdbyte  
  8.            0.0.1-SNAPSHOT  
  9.          
  10.        4.0.0  
  11.        product-common  
  12.          
  13.              
  14.                org.projectlombok  
  15.                lombok  
  16.                true  
  17.              
  18.          
  19.     

2.  只有 web 模塊用到的依賴移動(dòng)到 web 模塊。 

 
 
 
 
  1.   
  2.    
  3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  5.          
  6.            springboot-module-demo  
  7.            com.wdbyte 
  8.             0.0.1-SNAPSHOT  
  9.          
  10.        4.0.0  
  11.        product-web     
  12.          
  13.              
  14.                com.wdbyte  
  15.                product-common  
  16.              
  17.              
  18.                org.springframework.boot  
  19.                spring-boot-starter-web  
  20.              
  21.              
  22.                org.springframework.boot  
  23.                spring-boot-starter-test  
  24.                test  
  25.                  
  26.                      
  27.                        org.junit.vintage  
  28.                        junit-vintage-engine  
  29.                      
  30.                  
  31.              
  32.          
  33.     

3.  抽取用到的版本號(hào)到 ,這里抽取 common 模塊的依賴版本。

    到這里最外層主 pom 的內(nèi)容是這樣的。 

 
 
 
 
  1.   
  2.     
  3.              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  
  4.         4.0.0  
  5.         pom  
  6.           
  7.             product-common  
  8.             product-web  
  9.           
  10.           
  11.             org.springframework.boot 
  12.              spring-boot-starter-parent  
  13.             2.2.5.RELEASE  
  14.                
  15.           
  16.         com.wdbyte  
  17.         springboot-module-demo  
  18.         0.0.1-SNAPSHOT  
  19.         springboot-module-demo  
  20.         Demo project for Spring Boot  
  21.           
  22.             1.8  
  23.             0.0.1-SNAPSHOT  
  24.          
  25.           
  26.               
  27.                   
  28.                     com.wdbyte  
  29.                     product-common  
  30.                     ${product-common.version}  
  31.                   
  32.              
  33.            
  34.           
  35.               
  36.                   
  37.                     org.springframework.boot  
  38.                     spring-boot-maven-plugin  
  39.                   
  40.               
  41.           
  42.      

看似完美,重新  Build->  Build Project ,發(fā)現(xiàn)一切正常,運(yùn)行發(fā)現(xiàn)一切正常,訪問正常。

訪問接口

打包編譯

好了,終于到了最后一步了,你感覺到勝利的曙光已經(jīng)照到了頭頂,反射出耀眼的光芒。接著就是 mvn package。

 
 
 
 
  1. [INFO] springboot-module-demo ............................. SUCCESS [  2.653 s]  
  2. [INFO] product-common ..................................... FAILURE [  2.718 s] 
  3.  [INFO] product-web ........................................ SKIPPED  
  4. [INFO] ------------------------------------------------------------------------  
  5. [INFO] BUILD FAILURE  
  6. [INFO] ------------------------------------------------------------------------  
  7. [INFO] Total time: 6.084 s  
  8. [INFO] Finished at: 2020-03-19T08:15:52+08:00  
  9. [INFO] Final Memory: 22M/87M  
  10. [INFO] ------------------------------------------------------------------------  
  11. [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.5.RELEASE:repackage (repackage) on project product-common: Execution repackage of goal org.springframework.boot:spring-boot-m 
  12. aven-plugin:2.2.5.RELEASE:repackage failed: Unable to find main class -> [Help 1]  
  13. [ERROR] 

ERROR 讓你傷心了,但是你還是從報(bào)錯(cuò)中尋找到了一些蛛絲馬跡,你看到是  spring-boot-maven-plugin 報(bào)出的錯(cuò)誤。重新審視你的主 pom 發(fā)現(xiàn) 編譯插件用到了 spring-boot-maven-plugin。 

 
 
 
 
  1.   
  2.           
  3.               
  4.                 org.springframework.boot  
  5.                 spring-boot-maven-plugin  
  6.               
  7.           
  8.      

略加思索后將這段移動(dòng)到 web 模塊的 pom,因?yàn)檫@是 Spring Boot 的打包方式,現(xiàn)在放在主 pom 中所有的模塊都會(huì)繼承到,那么對(duì)于 common 模塊來說是肯定不需要的。

移動(dòng)后重新打包,不管你是運(yùn)行命令 mvn package 還是雙擊 IDEA 中的 maven 管理中的 package ,想必這時(shí)候你都已經(jīng)打包成功了

IDEA 打包

在 web 模塊下的目錄 target 里也可以看到打包后的 jar 文件 product-web-0.0.1-SNAPSHOT.jar??梢允褂?java 命令直接運(yùn)行。

 
 
 
 
  1. $ \springboot-module-demo\product-web\target>java -jar product-web-0.0.1-SNAPSHOT.jar  
  2.   .   ____          _            __ _ _  
  3.  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  
  4. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \  
  5.  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  
  6.   '  |____| .__|_| |_|_| |_\__, | / / / /  
  7.  =========|_|==============|___/=/_/_/_/  
  8.  :: Spring Boot ::        (v2.2.5.RELEASE)  
  9. 2020-03-19 08:33:03.337  INFO 15324 --- [           main] com.wdbyte.Application                   : Starting Application v0.0.1-SNAPSHOT on DESKTOP-8SCFV4M with PID 15324 (C:\Users\83981\Desktop\springboot-mod 
  10. ule-demo\product-web\target\product-web-0.0.1-SNAPSHOT.jar started by 83981 in C:\Users\83981\Desktop\springboot-module-demo\product-web\target) 
  11. 2020-03-19 08:33:03.340  INFO 15324 --- [           main] com.wdbyte.Application                   : No active profile set, falling back to default profiles: default 
  12. 2020-03-19 08:33:04.410  INFO 15324 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http) 
  13. 2020-03-19 08:33:04.432  INFO 15324 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat] 
  14. 2020-03-19 08:33:04.432  INFO 15324 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.31] 
  15. 2020-03-19 08:33:04.493  INFO 15324 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext 
  16. 2020-03-19 08:33:04.493  INFO 15324 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1107 ms 
  17. 2020-03-19 08:33:04.636  INFO 15324 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor' 
  18. 2020-03-19 08:33:04.769  INFO 15324 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '' 
  19. 2020-03-19 08:33:04.772  INFO 15324 --- [           main] com.wdbyte.Application                   : Started Application in 1.924 seconds (JVM running for 2.649) 
  20. 2020-03-19 08:33:07.087  INFO 15324 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor' 

 想必少了點(diǎn)什么,多模塊不僅為了結(jié)構(gòu)清晰,更是為了其他項(xiàng)目可以復(fù)用模塊(如 common 模塊),現(xiàn)在這個(gè)時(shí)候如果你新打開了一個(gè)項(xiàng)目,依賴 common  發(fā)現(xiàn)是引用不到的,因?yàn)槟阈枰涯K安裝到本地倉庫。可以點(diǎn)擊 IDEA -> Maven -> install,也可以通過 maven 命令。

 
 
 
 
  1. # -Dmaven.test.skip=true 跳過測(cè)試  
  2. # -U 強(qiáng)制刷新  
  3. # clean 清理緩存  
  4. # install 安裝到本地倉庫 
  5.  
  6. $ \springboot-module-demo 文章名稱:詳盡的Spring Boot多模塊開發(fā)與排坑指南
    網(wǎng)站地址:http://www.5511xx.com/article/cdpggcj.html