《苍穹外卖》知识梳理P1-多模块项目的创建

《苍穹外卖》知识梳理P1

一.多模块项目的创建

个人认为对于一个项目的学习,应当先从它的项目结构入手,明确了各个模块的职责与功能,后边尽心编写以及改写的时候会更加得心应手。
在这里插入图片描述
该项目分为了3个模块:sky-common模块,sky-pojo模块,sky-server模块,而这三个模块,又从属于一个父模块sky-take-out(sky-take-out中并没有任何内容,只是为了实现统一管理依赖版本,以及聚合其他子模块);

  • sky-common模块:子模块,存放公共类,每个公共类都单独对应一个包,例如:
    • 工具类utils
    • 常量类constants
    • 异常类exception
  • sky-pojo模块:子模块,存放实体类,例如:
    • 实体类DO,用于对应数据库中的表,通过持久层向上传递数据源对象;
    • 数据传输对象DTO,用来接收前端传过来的参数,一般会把前端传过来的参数封装进DTO,然后在Service中复制给新new的entity对象,然后进行持久化。
    • 显示层对象VO,通常是 Web 向模板渲染引擎层传输的对象。VO就是返回给前端的视图对象。
  • sky-server模块:子模块,后端服务类(主要在此编写代码)
    • 配置类Config,启动服务器时加载相关配置类进行配置;
    • 拦截器类Interceptor,对请求进行拦截,以便实现某些功能(比如登陆校验);
    • 切面类Aspect,实现AOP面向切面编程,在不影响原有代码的基础是进行功能增强;
    • 控制器类Controller,处理用户请求,负责接收请求参数,调用业务逻辑处理(通常是Service层),然后返回响应给用户。在Spring MVC等框架中,通常使用@Controller注解来标识控制器
    • 服务类Service,执行业务逻辑,包含应用的核心业务规则。Service层负责处理业务逻辑,可能涉及到事务控制、数据处理等。在Spring中,通常使用@Service注解来标识服务。
    • 数据访问类Mapper, 负责与数据库交互,进行数据的持久化操作。在MyBatis等持久层框架中,通常使用Mapper来定义数据访问的接口。在Spring Data JPA等框架中,通常使用@Repository注解标识数据访问对象。
1.1 Springboot多模块项目的创建

1.创建父模块

  • 1.1新建一个Springboot工程,使用默认即可;
    在这里插入图片描述
  • 1.2项目设置这里,类型选择Maven,Java版本使用Java8(我这里只有17,21),如果不能直接在这里选择java8与springboot2.7.3,后续也是可以直接在配置文件中进行修改的;
    在这里插入图片描述
  • 1.3选择spirngboot的版本2.7.3(我这里只能选择3以上的版本,因为前边选的Java17,这两个是有关联的);然后直接下一步即可;
    在这里插入图片描述
  • 1.4创建
    在这里插入图片描述
  • 1.5创建后的项目目录如下:我们需要删除一些内容,只保留我们需要的;
    在这里插入图片描述
    将选中的.mvn,src,HELP.md,mvnw,mvnw.cmd全部删掉
    在这里插入图片描述

二.创建子模块

  • 2.1右键父模块,选择创建》新模块》这次直接选择Maven,
    在这里插入图片描述- 2.2 修改子模块的名称,默认父模块是开始创建的那个;》完成
    在这里插入图片描述

三.修改pom.xml中springboot与java版本的信息(如果需要修改)

在父模块中:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.3</version>
    <relativePath/> 
</parent>
<properties>
    <java.version>8</java.version>
</properties>
3.1配置父模块中的pom.xml
<!--父模块统一进行依赖版本管理-->
<properties>
   <java.version>8</java.version>
    <mybatis.spring>2.2.0</mybatis.spring>
    <lombok>1.18.20</lombok>
    <fastjson>1.2.76</fastjson>
    <commons.lang>2.6</commons.lang>
    <druid>1.2.1</druid>
    <pagehelper>1.3.0</pagehelper>
    <aliyun.sdk.oss>3.10.2</aliyun.sdk.oss>
    <knife4j>3.0.2</knife4j>
    <aspectj>1.9.4</aspectj>
    <jjwt>0.9.1</jjwt>
    <jaxb-api>2.3.1</jaxb-api>
    <poi>3.16</poi>
    <junit>4.12</junit>
</properties>
<!--全部使用可选依赖,子模块需要时需要按需导入,版本使用统一设定好的即可-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.spring}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson}</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.lang}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid}</version>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${pagehelper}</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j}</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj}</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj}</version>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jjwt}</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>${aliyun.sdk.oss}</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>${jaxb-api}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit}</version>
            <scope>test</scope>
        </dependency>

        <!-- poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi}</version>
        </dependency>

        <!--微信支付-->
        <dependency>
            <groupId>com.github.wechatpay-apiv3</groupId>
            <artifactId>wechatpay-apache-httpclient</artifactId>
            <version>0.4.8</version>
        </dependency>

        <!--文件上传-->
        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.14</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>

    </dependencies>
</dependencyManagement>
3.2配置子模块的pom.xml

子模块由于继承了父模块中的依赖,所以只要按照需要直接导入即可,而不用添加版本(默认使用父模块中统一制定的版本);

<!--common模块中的依赖,其余相同,请根据需要进行导入-->
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-json</artifactId>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
    </dependency>
    <!--支持配置属性类,yml文件中可以提示配置项-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
    </dependency>
    <!--微信支付-->
    <dependency>
        <groupId>com.github.wechatpay-apiv3</groupId>
        <artifactId>wechatpay-apache-httpclient</artifactId>
    </dependency>
</dependencies>
<!--pojo模块-->
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
    </dependency>
</dependencies>
<dependencies>
	<!--当前模块需要使用其他模块的内容,也作为依赖导入;-->
    <dependency>
        <groupId>com.sky</groupId>
        <artifactId>zhisou-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>com.sky</groupId>
        <artifactId>zhisou-pojo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
	<!--其他依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
    </dependency>

    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-websocket</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
    </dependency>

    <!-- poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
    </dependency>
    
    <!--单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>compile</scope>
    </dependency>

    <!--文件上传-->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
    </dependency>

    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
        <version>3.15.1</version>
    </dependency>
</dependencies>
<!--还需要额外导入插件-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
3.3在server模块的com.sky.下设置启动类

(server模块这是我们主要进行开发的模块);

@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@Slf4j
public class ZhiSouApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZhiSouApplication.class, args);
        log.info("server started ...");
    }
}

至此,项目皮配置已经完成;

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黒猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值