初步规划

系统功能规划

一个完整的博客后台管理系统,通常需要具备以下核心功能:

  1. 用户管理

    • 用户注册/登录:支持普通用户和管理员用户注册和登录。
    • 用户信息管理:支持用户信息的查看、编辑、删除。
    • 角色管理:支持用户角色(如普通用户、管理员)的定义和分配。
    • 权限管理:支持基于角色的权限控制,不同角色拥有不同的操作权限。
  2. 博客文章管理

    • 文章发布/编辑/删除:支持博客文章的创建、编辑和删除。
    • 文章分类/标签管理:支持文章的分类和标签的创建、编辑和删除。
    • 文章列表:支持文章列表的展示和分页查询。
    • 文章详情:支持文章详情的展示。
    • 文章审核:支持文章的审核和发布控制。
  3. 评论管理

    • 评论查看:支持评论列表的展示和分页查询。
    • 评论审核:支持评论的审核和发布控制。
    • 评论删除:支持评论的删除。
  4. 系统设置

    • 站点设置:支持站点名称、logo、备案号等基本信息的设置。
    • 主题设置:支持博客主题的切换(可选)。
  5. 数据统计

    • 文章统计:统计文章的发布数量、阅读量等。
    • 用户统计:统计用户注册数量、活跃用户数量等。
    • 评论统计:统计评论的数量。
  6. 文件上传:

    • 支持文章图片、头像等文件的上传。
  7. 搜索功能:

    • 支持文章内容的搜索。

项目依赖规划

以下是构建这个单体项目所需的依赖:

  • Spring Boot: 用于快速构建 Spring 应用程序。
  • MyBatis-Plus: 用于简化数据库操作。
  • MySQL Connector/J: 用于连接 MySQL 数据库。
  • Lombok: 用于简化 Java 代码,自动生成 getter、setter 等方法。
  • Spring Web: 用于构建 Web 应用程序。
  • Spring Data Redis: 用于使用 Redis 作为缓存(可选)。
  • Validation API: 用于参数校验。
  • Springdoc OpenAPI UI: 用于生成 API 文档。
  • Spring Security: 用于安全认证。

创建父工程 (blog-parent)

  1. 在 IDE 中创建一个 Maven 项目,选择 pom 作为 packaging 属性。
  2. 在 pom.xml 中添加以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <?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.4.0</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.ln</groupId>
    <artifactId>blog-m</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>blog-m</name>
    <description>blog-m</description>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <spring-boot.version>3.3.4</spring-boot.version>
    <spring-security.version>6.2.1</spring-security.version>
    <spring-security-oauth2.version>6.2.1</spring-security-oauth2.version>
    <hutool.version>5.8.16</hutool.version>
    <springdoc.version>2.3.0</springdoc.version>
    </properties>

    <dependencyManagement>
    <dependencies>
    <!--springboot依赖-->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>

    <dependencies>
    <!-- Spring Boot Web 依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MySQL 依赖 -->
    <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    </dependency>

    <!-- MyBatis-Plus 依赖 -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
    </dependency>

    <!-- Redis 依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <!-- Lombok 依赖 -->
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    </dependency>

    <!-- Validation 依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <!-- Hutool 依赖 -->
    <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>${hutool.version}</version>
    </dependency>

    <!-- Springdoc OpenAPI UI 依赖 -->
    <dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>${springdoc.version}</version>
    </dependency>

    <!-- Spring Security 依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- spring security OAuth2 -->
    <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-resource-server</artifactId>
    <version>${spring-security-oauth2.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-jose</artifactId>
    <version>${spring-security-oauth2.version}</version>
    </dependency>
    </dependencies>

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    </plugin>
    </plugins>
    </build>

    </project>