maven管理的多模塊spring boot個性化推薦商城項目

spring boot項目搭建

  • idea搭建主項目
    選擇spring項目構建,和官網構建其實是一樣的
    在這裏插入圖片描述
    填寫相關的名稱在這裏插入圖片描述
    選擇你需要的依賴(可以先不填,等到分完模塊後填)
    在這裏插入圖片描述
  • 子模塊的搭建
    在這裏插入圖片描述
    其他模塊一樣的配置

修改主pom和子模塊pom

總體意思是讓主pom使用dependencyManagement來管理所有三方庫和子模塊的依賴版本

  • 主pom文件
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <!--maven父包管理使用pom-->
        <packaging>pom</packaging>
    
        <!--模塊-->
        <modules>
            <!--控制層-->
            <module>wmall-web</module>
            <!--業務邏輯層-->
            <module>wmall-service</module>
            <!--數據庫操作層-->
            <module>wmall-dao</module>
            <!--公共工具模塊-->
            <module>wmall-common</module>
            <!--數據庫模型層-->
            <module>wmall-model</module>
        </modules>
    
        <!--spring boot父類-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.9.RELEASE</version>
            <relativePath/>
        </parent>
    
        <!--主項目信息-->
        <groupId>com.actstrady</groupId>
        <artifactId>wmall</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <name>wmall</name>
        <description>personalized recommendation mall</description>
    
        <properties>
            <!--定義所有用到的依賴的版本-->
            <java.version>11</java.version>
        </properties>
        <!--使用主pom管理全部模塊依賴的方式進行管理,
        父模塊只提供版本定義,所以子模塊需要用的時候自己引用,只是不需要寫版本號-->
        <dependencyManagement>
            <dependencies>
                <!--子模塊的版本交給主模塊處理-->
                <dependency>
                    <groupId>com.actstrady</groupId>
                    <artifactId>wmall-web</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.actstrady</groupId>
                    <artifactId>wmall-service</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.actstrady</groupId>
                    <artifactId>wmall-dao</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.actstrady</groupId>
                    <artifactId>wmall-model</artifactId>
                    <version>${project.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.actstrady</groupId>
                    <artifactId>wmall-common</artifactId>
                    <version>${project.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    
  • dao層pom
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>wmall</artifactId>
            <groupId>com.actstrady</groupId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>wmall-dao</artifactId>
    
        <dependencies>
            <!--dao依賴於model-->
            <dependency>
                <groupId>com.actstrady</groupId>
                <artifactId>wmall-model</artifactId>
            </dependency>
        </dependencies>
    </project>
    
  • service層dao
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>wmall</artifactId>
            <groupId>com.actstrady</groupId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>wmall-service</artifactId>
    
        <dependencies>
            <!--service依賴於dao-->
            <dependency>
                <groupId>com.actstrady</groupId>
                <artifactId>wmall-dao</artifactId>
            </dependency>
        </dependencies>
    </project>
    
  • web層的pom
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>wmall</artifactId>
            <groupId>com.actstrady</groupId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>wmall-web</artifactId>
        <dependencies>
            <!--web依賴於service-->
            <dependency>
                <groupId>com.actstrady</groupId>
                <artifactId>wmall-service</artifactId>
            </dependency>
    
            <!--spring boot reactor web提供的依賴-->
            <!--web flux-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
            <!--spring boot test依賴-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!--reactor的測試依賴-->
            <dependency>
                <groupId>io.projectreactor</groupId>
                <artifactId>reactor-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    
  • 其他兩個pom不用修改,他們沒什麼依賴關係,都是其他依賴他們

項目啓動測試(寫一個resful規範的User)

嘗試使用spring5的新引入的響應式編程來實現,即Web Reactive,包含Spring WebFlux與springboot的spring Reactive web來快速構建項目,目前項目暫時擱置,具體的技術比較新,比如spring-data-r2dbc,就是實現關係型數據庫的非阻塞異步,spring官方提供的解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章