黄朝忆的个人博客
登录|注册

一个Java项目的架构记录

开始一个新的项目、记录一下这个项目的架构思路

在这里用一个InteliJ IDEA来创建

 

 创建一个父项目

直接下一步

选择项目必须需要的一些包, 其它后面在yml文件里面都可以添加的

 

创建完父工程后,先把一些多余的文件删除掉;就保留.idea,.gitignore, pom.xml;注意:src也要删除掉,只负责管模块和版本,本身不编译、不启动。

其实这里我觉得应该菜单选Java来创建更好,要不然要删除的东西太多了;

现在把pom.xml文件里的dependencies标签及标签内的东西都删除掉

 

在pom.xml里面约定一些东西

layer-weaver-common 存放公用的

layer-weaver-front  前台调用的 (创建的时候选spring boot)

layer-weaver-service 服务

layer-weaver-admin 后台(创建的时候选spring boot)

最后的父工程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>
        <version>4.1.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.qingchuan</groupId>
    <artifactId>layer-weaver-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>layer-weaver-server</name>
    <description>layer-weaver-server</description>

    <packaging>pom</packaging>
    <modules>
        <module>layer-weaver-common</module>
        <module>layer-weaver-service</module>
        <module>layer-weaver-front</module>
        <module>layer-weaver-admin</module>
    </modules>

    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>21</java.version>
    </properties>


    <build>
        <!-- 父工程只做编译约定;可执行包插件放到 front / admin -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

 

 

接下来创建4个子模型: 点击项目名,右键new -> Module

 

layer-weaver-front、layer-weaver-admin要选Spring boot

 

 


开始修改xxx-common的pom.xml

改 layer-weaver-common/pom.xml
保持 parent = layer-weaver-server,补最小依赖,例如:

spring-boot-starter-web(或 Boot4 的 webmvc,看你最终版本)
spring-boot-starter-validation
lombok
后续再加 mybatis-plus 注解、jwt 等
加:<packaging>jar</packaging>

包建议:com.qingchuan.common

<?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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.qingchuan</groupId>
        <artifactId>layer-weaver-server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>layer-weaver-common</artifactId>
    <packaging>jar</packaging>
    <name>layer-weaver-common</name>
    <description>Shared constants, DTOs, utils, and common configs</description>

    <dependencies>
        <!-- Boot 4:webmvc 替代已弃用的 starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 后续再加:mybatis-plus 注解、jwt 等 -->
    </dependencies>
</project>

 


第 3 步:改 layer-weaver-service/pom.xml

<parent>...layer-weaver-server...</parent>
<artifactId>layer-weaver-service</artifactId>
 
<dependencies>
<dependency>
<groupId>com.qingchuan</groupId>
<artifactId>layer-weaver-common</artifactId>
<version>${project.version}</version>
</dependency>
<!-- mybatis-plus / mysql / redis / lombok 放这里 -->
</dependencies>

包建议:com.qingchuan.service

<?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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.qingchuan</groupId>
        <artifactId>layer-weaver-server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>layer-weaver-service</artifactId>
    <packaging>jar</packaging>
    <name>layer-weaver-service</name>
    <description>Domain services, mappers, and business logic</description>

    <dependencies>
        <dependency>
            <groupId>com.qingchuan</groupId>
            <artifactId>layer-weaver-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- mybatis-plus / mysql / redis / lombok 放这里 -->
    </dependencies>
</project>

 


改 front / admin(最关键)

把它们的 parent 从 spring-boot-starter-parent 改成:


<parent>
    <groupId>com.qingchuan</groupId>
    <artifactId>layer-weaver-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
然后依赖里加:

<dependency>
    <groupId>com.qingchuan</groupId>
    <artifactId>layer-weaver-service</artifactId>
    <version>${project.version}</version>
</dependency>
再保留各自需要的 web、validation、springdoc,以及 spring-boot-maven-plugin + mainClass。

启动类建议:

com.qingchuan.front.FrontApplication
com.qingchuan.admin.AdminApplication
并加上:

@SpringBootApplication(scanBasePackages = "com.qingchuan")
@MapperScan("com.qingchuan.service.mapper")

<?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>com.qingchuan</groupId>
        <artifactId>layer-weaver-server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <artifactId>layer-weaver-front</artifactId>
    <packaging>jar</packaging>
    <name>layer-weaver-front</name>
    <description>User-facing API application</description>

    <dependencies>
        <dependency>
            <groupId>com.qingchuan</groupId>
            <artifactId>layer-weaver-service</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- 应用层能力;mysql / redis / jdbc 后续可下沉到 service -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 

 

 

 

评论(共 0 条)

编辑器加载中...
一个Java项目的架构记录