【java】【重构一】分模块开发设计实战

news2024/11/18 1:32:32

目录

一、创建项目 

1、先创建一个空项目

2、设置项目SDK等

二、创建父模块 选择springboot

1、创建父模块parent

2、删除多余文件,只保留pom.xml

3、修改pom.xml

4、将部分公共依赖加入到pom

三、创建实体类子模块entity

1、创建实体类子模块entity

2、删除无关文件

3、修改pom

4、复制实体类文件entity到目录下(没有就创建)

四、创建工具类子模块utils

1、创建工具类子模块utils

 2、删除多余文件,只保留pom.xml

3、修改pom.xml 

4、复制实体类文件utils到目录下(没有就创建)

五、创建web项目子模块web-management

1、创建web项目子模块web-management

2、修改pom.xml

3、复制web项目文件

4、新建resources

5、resources新建目录com/bocai/mapper

6、复制相关文件

7、 复制启动程序

六、启动服务

1、启动后端AppApplication

2、启动ngnix 

3、验证数据


前言:接《[JavaWeb]【十四】web后端开发-MAVEN高级》开始从头开始分模块设计java项目

一、创建项目 

1、先创建一个空项目

2、设置项目SDK等

SDK选择1.8,Language Level 选择8。 

二、创建父模块 选择springboot

1、创建父模块parent

2、删除多余文件,只保留pom.xml

3、修改pom.xml

<?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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<!-- 1、修改为2.7.5 -->
		<version>2.7.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	
	<groupId>com.bocai</groupId>
	<artifactId>bocai-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>	
	<!-- 2、新增设置打包模式为pom  -->
	<packaging>pom</packaging>
	
	
	<!--   3、注释 name与description -->
	<!--<name>bocai-parent</name>
	<description>bocai-parent</description>-->
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		
		
		<!--  4、注释以下依赖  -->
	<!--
    <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>
    -->
</dependencies>



<!-- 5、注释 build   -->
	<!--
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
	-->

</project>

4、将部分公共依赖加入到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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- 1、修改为2.7.5 -->
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.bocai</groupId>
    <artifactId>bocai-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 2、新增设置打包模式为pom  -->
    <packaging>pom</packaging>


    <!--   3、注释 name与description -->
    <!--<name>bocai-parent</name>
    <description>bocai-parent</description>-->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--  6、 加入的公共依赖  -->
        <!--   lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--  4、注释以下依赖  -->
        <!--
        <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>
        -->
    </dependencies>



    <!-- 5、注释 build   -->
    <!--
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    -->

</project>

三、创建实体类子模块entity

1、创建实体类子模块entity

2、删除无关文件

3、修改pom

<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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.bocai</groupId>
        <artifactId>bocai-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../bocai-parent/pom.xml</relativePath>
    </parent>

    <artifactId>bocai-entity</artifactId>
    <!--  1、注释 打包方式(不确定)-->
    <!--
    <packaging>jar</packaging> -->

    <name>bocai-entity</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <!-- 2、  注释 junit  -->
        <!--
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        -->
    </dependencies>
</project>

4、复制实体类文件entity到目录下(没有就创建)

四、创建工具类子模块utils

1、创建工具类子模块utils

 

 2、删除多余文件,只保留pom.xml

3、修改pom.xml 

<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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.bocai</groupId>
        <artifactId>bocai-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../bocai-parent/pom.xml</relativePath>
    </parent>

    <artifactId>bocai-utils</artifactId>
    <!--  1、注释 打包方式(不确定)-->
    <!--
    <packaging>jar</packaging> -->

    <name>bocai-utils</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>

        <!-- 2、  注释 junit  -->
        <!--
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        -->

        <!-- 3、加入依赖 -->
        <!--   web起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        阿里云OSS依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- no more than 2.3.3-->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.3</version>
        </dependency>



        <!--JWT令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
    </dependencies>
</project>

4、复制实体类文件utils到目录下(没有就创建)

五、创建web项目子模块web-management

1、创建web项目子模块web-management

2、修改pom.xml

核心是引入本文的子模块entity和utils

<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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.bocai</groupId>
        <artifactId>bocai-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../bocai-parent/pom.xml</relativePath>
    </parent>

    <artifactId>bocai-web-management</artifactId>
    <!--  1、注释 打包方式(不确定)-->
    <!--
    <packaging>jar</packaging> -->

    <name>bocai-web-management</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 2、  注释 junit  -->
        <!--
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        -->

        <!-- 3、加入 子模块依赖 -->
        <dependency>
            <groupId>com.bocai</groupId>
            <artifactId>bocai-entity</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.bocai</groupId>
            <artifactId>bocai-utils</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!-- 4、加入依赖 -->

        <!--   web起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--   mybatis起步依赖 -->

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!--   mysql驱动 -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--   springboot单元测试 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- PageHelper分页插件https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>


        <!--fastJSON-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <!--AOP-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

    </dependencies>


</project>

3、复制web项目文件

部分文件可能会报错,主要体现在  web起步依赖 ,到每个文件单独处理一下

4、新建resources

5、resources新建目录com/bocai/mapper

6、复制相关文件

7、 复制启动程序

package com.bocai;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;


@Slf4j
@ServletComponentScan  //开启了对servlet组件支持  Filter
@SpringBootApplication
public class AppApplication {

    public static void main(String[] args) {

        SpringApplication.run(AppApplication.class, args);
        log.info("============ 服务启动完成!=====================");
    }


}

 AppApplicationTests 注释了一个测试代码,打包的时候报错

package com.bocai;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@SpringBootTest
class AppApplicationTests {

    @Test
    void contextLoads() {
    }

    /**
     * 生成Jwt令牌
     */
    @Test
    public void testGenJwt(){
        Map<String, Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("name","bocai");
        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, "bocai") // 签名算法 算法有哪些上官网
                .setClaims(claims) //自定义的内容(载荷)
                .setExpiration(new Date(System.currentTimeMillis() + 3600* 1000)) // 设置有效期为1h
                .compact();
        System.out.println(jwt);

    }

    /**
     * 解析Jwt, parseClaimsJws(换成上面生成的jwt)
     */
//    @Test
//    public void testPareJwt(){
//        Claims claims = Jwts.parser()
//                .setSigningKey("bocai") //runa要与前面生成一致
//                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYm9jYWkiLCJpZCI6MSwiZXhwIjoxNjk3NTM5MTQzfQ.kh_8USqITQHQvnOpWuF8Z7BB0x_BVhfZvOgF1JMcj8o")
//                .getBody();
//        System.out.println(claims);
//
//    }

}

六、启动服务

1、启动后端AppApplication

2、启动ngnix 

3、验证数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32CubeMX和Keil uVision5软件

目录 关系定位&#xff1a;合作关系STM32CubeMXKeil uVision5综上所述Q1:STM32CubeMX生成的初始化代码和配置文件为什么还需要Keil uVision5进行进一步的开发和调试Q2&#xff1a;二者如何配合最后生成可执行文件 关系定位&#xff1a;合作关系 STM32CubeMX和Keil uVision5是两…

【C++特殊类的设计】

目录 一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象三、请设计一个类&#xff0c;只能在栈上创建对象四、请设计一个类&#xff0c;不能被继承五、请设计一个类&#xff0c;只能创建一个对象(单例模式)5.1饿汉模式5.2懒汉模式 一、请…

那里可以自学C语言?

那里可以自学C语言&#xff1f; 我个人的习惯&#xff0c;学一门新的编程语言一定是需要目的的。 也就是学这个语言是干什么? 单纯的上学学习C语言一般都是 工科的专业作为专业课而开设的学科,这种很多都是使用谭浩强最近很多小伙伴找我&#xff0c;说想要一些c语言资料&…

数字化体系如何帮助企业拓展裂变增长渠道?数字化营销体系构建?

在当前的商业环境中&#xff0c;数字不仅仅是数据&#xff0c;还代表着技术和资产。企业数字化正是将数据转化为资产的过程。从信息化时代到数字化时代&#xff0c;企业逐渐将业务和组织、管理和创收都朝着在线化和数据化的方向发展&#xff0c;特别是企业的业务板块。数字化营…

图纸管理系统作用包括哪些?图纸管理系统有何作用?

图纸管理系统在设计制造行业中起着重要的作用&#xff0c;让企业的图纸管理变得更加便捷、更加高效&#xff0c;实现无纸化运作&#xff0c;提高工作效率。 彩虹图纸管理系统 集中管理和存储&#xff1a;图纸管理系统可以集中管理和存储所有图纸文件&#xff0c;包括2D图、3D图…

找出字符串中第一个匹配项的下标

题目链接 找出字符串中第一个匹配项的下标 题目描述 注意点 haystack 和 needle 仅由小写英文字符组成 解答思路 使用KMP算法&#xff0c;相比于普通地将整个字符串分成多块大小为needle.length()的子串找到第一个与needle匹配的子串&#xff0c;其可以在判断出任意一个子…

“当当平台关键字搜索API:轻松实现高效购物,获取海量商品信息!“

当当平台关键字搜索API可以让开发者通过API接口在当当平台上进行关键字搜索&#xff0c;从而获得商品列表。以下是使用当当平台关键字搜索API的一般步骤&#xff1a; 在当当开放平台注册账号&#xff0c;创建应用&#xff0c;获取API使用的App Key。根据当当开放平台的文档&am…

Linux系统的特点以及年轻人如何获取第一个Linux系统

由新闻想到的 新闻一&#xff1a;政府机构 5000 万台电脑将替换为国产 Linux &#xff01; 由这个新闻想到的&#xff0c;如果中国的所有个人、企业、政府把电脑系统都换成linux或者是国产操作系统&#xff0c;那将是怎样的一种景象&#xff01;&#xff1f; 新闻二&#xf…

Spring Cloud 之 GateWay简介及简单DEMO的搭建

&#xff08;1&#xff09;Filter&#xff08;过滤器&#xff09;&#xff1a; 和Zuul的过滤器在概念上类似&#xff0c;可以使用它拦截和修改请求&#xff0c;并且对上游的响应&#xff0c;进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的…

竞赛选题 深度学习人体语义分割在弹幕防遮挡上的实现 - python

文章目录 1 前言1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法 3 实例分割4 实现效果5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人体语义分割在弹幕防遮挡上的应用 该项目较为新颖&#xff0c;适合作为竞…

究竟如何?深入研究在缺少main.go文件时如何运行Go代码

是否可以在没有main.go文件的情况下运行Go代码&#xff1f; &#x1f600; 在Go语言中&#xff0c;包(package)是代码组织的基本单元&#xff0c;而可执行程序则需要一个特殊的main包和一个main函数。本篇博客将帮助您理解Go语言中包和可执行程序的概念&#xff0c;以及main.go…

【单片机毕业设计】【hj-006-7】CO、有害混合气体检测 | 空气质量检测 | 有害气体检测

一、基本介绍 项目名&#xff1a; 基于单片机的CO、有害混合气体检测系统设计 基于单片机的空气质量检测系统设计 基于单片机的有害气体检测系统设计 项目编号&#xff1a;mcuclub-hj-006-7 单片机类型&#xff1a;STC89C52 具体功能&#xff1a; 1、通过MQ-7检测CO值&#x…

hbase操作学习

1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…

STM32 __attribute__((section(“***“)))

1.在参考例程做STM32 IAP升级时遇到了关于__attribute__((section("***")))的问题&#xff0c;例程使用的是 uint8_t USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000))); 例程在使用CUBEIDE编译时提示warning: at attribute directive ignored [-Watt…

长钢管每米直线度检测 在线直线度测量仪轻松搞定!

钢管是一种常见的建筑材料&#xff0c;广泛应用于各种建筑和工程领域。钢管的直线度对于其使用性能和使用寿命具有重要影响&#xff0c;因此需要对钢管的直线度进行检测。传统的钢管直线度检测方法是通过测量多段钢管的直线度和弯头的角度来实现&#xff0c;这种方法不仅效率低…

Python常用语句(初学入门)不要一直做脚本小子

目录 一、判断语句 1、if语句 2、if-else语句 3、if-elif语句 4、if嵌套 二、循环语句 1、while循环 2、for循环 3、while嵌套 三、Python的其他语句 1、break语句 2、continue语句 3、pass语句 4、else语句 ~~~摆脱脚本小子&#xff0c;从现在开始学习Python~~~ …

将用友U8的数据可视化需要哪些工具?

将金蝶U8的数据可视化需要一个奥威BI数据可视化工具&#xff0c;以及一套专为用友U8打造的标准化BI数据分析方案。 奥威BI SaaS平台&#xff1a;一键链接用友U8&#xff0c;立得报表 别的BI软件围绕用友U8的数据做可视化&#xff1a;1、准备配置环境&#xff1b;2、下载安装配…

canvas绘制多种文字效果:描边,阴影,渐变色等

canvas可以绘制多种样式的文字效果&#xff1a;比如渐变&#xff0c;阴影&#xff0c;描边等效果&#xff0c;如下图&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta…

淘宝天猫商品详情接口(店铺所有商品接口,商品搜索列表接口)代码展示

业务背景&#xff1a;大家有探讨稳定采集淘宝天猫商品详情页面的数据包括App端和H5端及PC端&#xff0c;采集数据包括&#xff1a;获取商品列表主图、价格、标题&#xff0c;sku&#xff0c;商品评论日期&#xff0c;评论内容&#xff0c;评论图片&#xff0c;买家昵称&#xf…

动态天气预报:Living Weather HD for Mac

Living Weather HD能够为Mac用户提供及时、准确、个性化的天气信息&#xff0c;并提供了丰富的定制选项&#xff0c;使用户能够更加方便地查看天气状况。 具有以下特点&#xff1a; 显示世界各地的准确天气预报和当地时间。自动探测出用户所在的首个地点&#xff0c;并通过搜…