一个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
包建议: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 条)