一、基于SpringBoot的个人知识库博客项目(多模块项目创建)

本文将正式开始我们项目的创建,由于最近接触的项目是多模块项目,所以打算学习使用一下,项目就以多模块架构搭建了,可以有更好的代码组织结构,这样写项目也便于由单体项目演变成springcloud架构,以后有需求的话就再尝试尝试爆改springcloud项目。OK,准备动手OAO!!!!

目录

项目采用多模块架构搭建

第一步,创建父模块

第二步,创建子模块

第三步,修改pom文件

pom.xml(PersonalKnowledgeBaseBlog)

pom.xml(blog-admin)

pom.xml(blog-system)

第四步,创建测试类

TesController

TestService

TestServiceImpl

第五步、让项目启动时扫描包

第六步、测试接口


项目采用多模块架构搭建

        父模块统一管理依赖,admin模块和外界交互,system模块业务逻辑处理

        我们要知道我们在干什么,我们在搭建架构,也就是让我们项目有一个基础框架,让我们后续代码有组织有纪律,整整齐齐,哪里起什么作用一目了然,完成本文章后我们就拥有管理者(父模块),外交官(admin模块),还有员工(system模块)组成的一个小项目,再详细一点,就是父类管理统一的依赖(pom文件),admin模块管理Controller层和启动类,system模块就是Service层,Dao层之类的具体的代码逻辑实现。

第一步,创建父模块

打开IDEA-新建-项目,第一次创建的是我们的父模块,用于统一管理

下一步

创建好后是这样的

把用不上的文件删除

第二步,创建子模块

父模块创建好后继续创建子模块

创建admin模块

啥都不选直接创建

创建system模块

和admin一样直接创建

把不要的部分删除

第三步,修改pom文件

        然后就是修改pom文件,现在总共有三个pom文件,后续我们会继续加模块,但是pom文件的类型就是三类,父类,入口类,其他类按顺序对应着我们的父类pom文件,admin模块pom文件,system模块pom文件,所以说之后我们创建的模块都按照system模块的pom文件的格式来创建

1、父类pom文件加上

pom全部内容

pom.xml(PersonalKnowledgeBaseBlog)
<?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>3.5.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lzm</groupId>
    <artifactId>PersonalKnowledgeBaseBlog</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>PersonalKnowledgeBaseBlog</name>
    <description>PersonalKnowledgeBaseBlog</description>
    <!--修改父项目的打包方式为pom-->
    <packaging>pom</packaging>

    <!--添加子模块到父项目-->
    <modules>
        <module>blog-system</module>
        <module>blog-admin</module>
    </modules>

    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <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>
            <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>
        </plugins>
    </build>

</project>

2、admin的pom文件

将上述替换成下述(意思是告诉项目我的父类到底是谁)

然后增加(意思是我是启动类)

因为admin的controller层需要用到system的service层和domain层,所以要加上(他我有用,收入麾下)

pom全部内容

pom.xml(blog-admin)
<?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>
	<!--引入父项目 替换掉之前的springboot父项目(spring-boot-starter-parent)-->
	<parent>
		<groupId>com.lzm</groupId>
		<artifactId>PersonalKnowledgeBaseBlog</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.lzm</groupId>
	<artifactId>blog-admin</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>blog-admin</name>
	<description>blog-admin</description>
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<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>com.lzm</groupId>
			<artifactId>blog-system</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<scope>compile</scope>
		</dependency>

	</dependencies>

	<!--定义启动类和打包布局-->
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<mainClass>com.lzm.blogadmin.BlogAdminApplication</mainClass>
					<layout>JAR</layout>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

3、system的pom文件

和admin一样上述改下述就行

因为system暂时没有使用其他模块内容,所以就这样就行(因为我手下没有人了,我现在只是一个小弟)

pom全部内容

pom.xml(blog-system)
<?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.lzm</groupId>
		<artifactId>PersonalKnowledgeBaseBlog</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.lzm</groupId>
	<artifactId>blog-system</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>blog-system</name>
	<description>blog-system</description>

	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		<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>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

第四步,创建测试类

然后就是写一些测试类来看看我们的项目是否搭建成功

创建好这样的结构,后续我们的业务逻辑就写在这些结构里面

再创建测试类,注意接口和类的区别

TesController
package com.lzm.blogadmin.web.controller;
import com.lzm.blogsystem.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


@RestController
    @RequestMapping("/test")
    public class TestController {
        @Autowired
        private TestService testService;
        @GetMapping("/test1")
        public String test1(){
            return testService.test1();
        }
    }


TestService
package com.lzm.blogsystem.service;



public interface TestService {
    String test1();
}
TestServiceImpl
package com.lzm.blogsystem.service.impl;

import com.lzm.blogsystem.service.TestService;
import org.springframework.stereotype.Service;

@Service
public class TestServiceImpl implements TestService {
    @Override
    public String test1() {
        return "test1";
    }
}

第五步、让项目启动时扫描包

还得记得我们要再启动类里面加上@ComponentScan注解,这样启动类才能扫描到所有的包

@ComponentScan(basePackages = {"com.lzm.blogadmin", "com.lzm.blogsystem"})

要不然会报错

原因就是项目启动时没有扫描到我们的blogsystem包

启动项目

看到这个就说明项目正常运行(如果报错了,可以把报错给AI看看是哪一步出了问题,可以直接让Trae智能体打开项目,他会从你的实际项目中找出问题并修改)

第六步、测试接口

然后找一个可以测试接口的工具,(postman、Apifox什么的都行)

得到了我们的返回值

这样就说明我们的springboot的多模块项目的基础框架就搭建好了,很明显我们的数据库还没用上,所以下一篇文章就是接入我们的数据库啦,一步一个脚印,让我把坑都给他踩平!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值