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

《苍穹外卖》知识梳理P1

一.多模块项目的创建

个人认为对于一个项目的学习,应当先从它的项目结构入手,明确了各个模块的职责与功能,后边尽心编写以及改写的时候会更加得心应手。
《苍穹外卖》知识梳理P1-多模块项目的创建_第1张图片
该项目分为了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工程,使用默认即可;
    《苍穹外卖》知识梳理P1-多模块项目的创建_第2张图片
  • 1.2项目设置这里,类型选择Maven,Java版本使用Java8(我这里只有17,21),如果不能直接在这里选择java8与springboot2.7.3,后续也是可以直接在配置文件中进行修改的;
    《苍穹外卖》知识梳理P1-多模块项目的创建_第3张图片
  • 1.3选择spirngboot的版本2.7.3(我这里只能选择3以上的版本,因为前边选的Java17,这两个是有关联的);然后直接下一步即可;
    《苍穹外卖》知识梳理P1-多模块项目的创建_第4张图片
  • 1.4创建
    《苍穹外卖》知识梳理P1-多模块项目的创建_第5张图片
  • 1.5创建后的项目目录如下:我们需要删除一些内容,只保留我们需要的;
    《苍穹外卖》知识梳理P1-多模块项目的创建_第6张图片
    将选中的.mvn,src,HELP.md,mvnw,mvnw.cmd全部删掉
    《苍穹外卖》知识梳理P1-多模块项目的创建_第7张图片

二.创建子模块

  • 2.1右键父模块,选择创建》新模块》这次直接选择Maven,
    《苍穹外卖》知识梳理P1-多模块项目的创建_第8张图片- 2.2 修改子模块的名称,默认父模块是开始创建的那个;》完成
    《苍穹外卖》知识梳理P1-多模块项目的创建_第9张图片

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

在父模块中:

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.7.3version>
    <relativePath/> 
parent>
<properties>
    <java.version>8java.version>
properties>
3.1配置父模块中的pom.xml

<properties>
   <java.version>8java.version>
    <mybatis.spring>2.2.0mybatis.spring>
    <lombok>1.18.20lombok>
    <fastjson>1.2.76fastjson>
    <commons.lang>2.6commons.lang>
    <druid>1.2.1druid>
    <pagehelper>1.3.0pagehelper>
    <aliyun.sdk.oss>3.10.2aliyun.sdk.oss>
    <knife4j>3.0.2knife4j>
    <aspectj>1.9.4aspectj>
    <jjwt>0.9.1jjwt>
    <jaxb-api>2.3.1jaxb-api>
    <poi>3.16poi>
    <junit>4.12junit>
properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>${mybatis.spring}version>
        dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit}version>
            <scope>testscope>
        dependency>

        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>${lombok}version>
        dependency>

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>${fastjson}version>
        dependency>

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

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>${druid}version>
        dependency>

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

        <dependency>
            <groupId>com.github.xiaoymingroupId>
            <artifactId>knife4j-spring-boot-starterartifactId>
            <version>${knife4j}version>
        dependency>

        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjrtartifactId>
            <version>${aspectj}version>
        dependency>

        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>${aspectj}version>
        dependency>

        <dependency>
            <groupId>io.jsonwebtokengroupId>
            <artifactId>jjwtartifactId>
            <version>${jjwt}version>
        dependency>

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

        <dependency>
            <groupId>javax.xml.bindgroupId>
            <artifactId>jaxb-apiartifactId>
            <version>${jaxb-api}version>
        dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit}version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>org.apache.poigroupId>
            <artifactId>poiartifactId>
            <version>${poi}version>
        dependency>
        <dependency>
            <groupId>org.apache.poigroupId>
            <artifactId>poi-ooxmlartifactId>
            <version>${poi}version>
        dependency>

        
        <dependency>
            <groupId>com.github.wechatpay-apiv3groupId>
            <artifactId>wechatpay-apache-httpclientartifactId>
            <version>0.4.8version>
        dependency>

        
        
        <dependency>
            <groupId>cn.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>5.8.14version>
        dependency>

        <dependency>
            <groupId>com.aliyun.ossgroupId>
            <artifactId>aliyun-sdk-ossartifactId>
            <version>3.15.1version>
        dependency>

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

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


<dependencies>
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    dependency>
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>fastjsonartifactId>
    dependency>
    <dependency>
        <groupId>commons-langgroupId>
        <artifactId>commons-langartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-jsonartifactId>
    dependency>
    <dependency>
        <groupId>io.jsonwebtokengroupId>
        <artifactId>jjwtartifactId>
    dependency>
    
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-configuration-processorartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>com.aliyun.ossgroupId>
        <artifactId>aliyun-sdk-ossartifactId>
    dependency>
    <dependency>
        <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
    dependency>
    
    <dependency>
        <groupId>com.github.wechatpay-apiv3groupId>
        <artifactId>wechatpay-apache-httpclientartifactId>
    dependency>
dependencies>

<dependencies>
    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.coregroupId>
        <artifactId>jackson-databindartifactId>
        <version>2.9.2version>
    dependency>
    <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-spring-boot-starterartifactId>
    dependency>
dependencies>
<dependencies>
	
    <dependency>
        <groupId>com.skygroupId>
        <artifactId>zhisou-commonartifactId>
        <version>0.0.1-SNAPSHOTversion>
    dependency>

    <dependency>
        <groupId>com.skygroupId>
        <artifactId>zhisou-pojoartifactId>
        <version>0.0.1-SNAPSHOTversion>
    dependency>
	
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
        <scope>compilescope>
    dependency>

    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <scope>runtimescope>
    dependency>

    <dependency>
        <groupId>org.mybatis.spring.bootgroupId>
        <artifactId>mybatis-spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
    dependency>

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>fastjsonartifactId>
    dependency>

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druid-spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>com.github.pagehelpergroupId>
        <artifactId>pagehelper-spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>org.aspectjgroupId>
        <artifactId>aspectjrtartifactId>
    dependency>

    <dependency>
        <groupId>org.aspectjgroupId>
        <artifactId>aspectjweaverartifactId>
    dependency>

    <dependency>
        <groupId>com.github.xiaoymingroupId>
        <artifactId>knife4j-spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-cacheartifactId>
    dependency>

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-websocketartifactId>
    dependency>

    <dependency>
        <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
    dependency>

    
    <dependency>
        <groupId>org.apache.poigroupId>
        <artifactId>poiartifactId>
    dependency>
    <dependency>
        <groupId>org.apache.poigroupId>
        <artifactId>poi-ooxmlartifactId>
    dependency>
    
    
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <scope>testscope>
    dependency>

    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <scope>compilescope>
    dependency>

    
    <dependency>
        <groupId>cn.hutoolgroupId>
        <artifactId>hutool-allartifactId>
    dependency>

    <dependency>
        <groupId>com.aliyun.ossgroupId>
        <artifactId>aliyun-sdk-ossartifactId>
        <version>3.15.1version>
    dependency>
dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
        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 ...");
    }
}

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

你可能感兴趣的:(《苍穹外卖》实操总结系列,java,tomcat,spring,maven,spring,boot,mybatis)