搭建SpringBoot3 + Vue3 的快速开发框架(1)

搭建SpringBoot3 + Vue3 的快速开发框架(1)

  • 前言
  • 开发目标
  • 项目开发
    • 创建项目
    • 创建子模块
      • common
      • framework
      • ui
    • 启动项目
      • 前端启动
      • 后端启动
  • 后续内容

前言

因为工作需要,要搭建一套非微服务的单体应用,主要场景是针对中小型企业或者客户,并发量不高、数据量也比较有限的情况。在使用ruoyi等框架的时候,总感觉有些地方还是用不太顺手。因此也根据个人习惯,在开发项目的同时,尽量整理输出一个针对纯代码开发者使用的快速开发框架。

开发目标

使用对象:有vue与java开发能力的开发者,需要开发中小型企业管理、oa等系统。提供比较成熟并且扩展性优秀的快速开发框架。能够集成流程引擎、用户认证、权限校验、系统监控等通用功能模块。

项目开发

创建项目

1.首先新建springboot3项目,因为是新项目,直接使用最新的jdk20;连接池目前druid不支持springboot3,网上查阅资料后最终选择Hikari;权限认证使用sa-token。数据库选择mysql8;项目根模块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.0modelVersion>

    <artifactId>freedoneartifactId>
    <groupId>cn.sakuraSmilesgroupId>
    <version>${freedone.version}version>

    <name>freedonename>
    <description>freedone前后端分离开发框架description>

    <properties>
        <freedone.version>0.1.0freedone.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <java.version>20java.version>
        <satoken.version>1.34.0satoken.version>
        <mysql.version>8.0.17mysql.version>
        <druid.version>5.0.1druid.version>
        <mybatis.version>3.0.1mybatis.version>
        <gson.version>2.10.1gson.version>
        <junit.version>4.13.1junit.version>
    properties>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>3.0.6version>
    parent>
    
    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>cn.dev33groupId>
                <artifactId>sa-token-spring-boot3-starterartifactId>
                <version>${satoken.version}version>
            dependency>
            
            <dependency>
                <groupId>cn.dev33groupId>
                <artifactId>sa-token-dao-redis-jacksonartifactId>
                <version>${satoken.version}version>
            dependency>
            
            <dependency>
                <groupId>com.zaxxergroupId>
                <artifactId>HikariCPartifactId>
                <version>${druid.version}version>
            dependency>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql.version}version>
            dependency>
            
            <dependency>
                <groupId>org.mybatis.spring.bootgroupId>
                <artifactId>mybatis-spring-boot-starterartifactId>
                <version>${mybatis.version}version>
            dependency>
            <dependency>
                <groupId>com.google.code.gsongroupId>
                <artifactId>gsonartifactId>
                <version>${gson.version}version>
            dependency>
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>${junit.version}version>
                <scope>testscope>
            dependency>
        dependencies>
    dependencyManagement>
    <modules>
        <module>freedone-commonmodule>
    modules>
    <packaging>pompackaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.1version>
                <configuration>
                    <source>19source>
                    <target>19target>
                    <encoding>${project.build.sourceEncoding}encoding>
                configuration>
            plugin>
        plugins>
    build>
    <repositories>
        <repository>
            <id>publicid>
            <name>aliyun nexusname>
            <url>https://maven.aliyun.com/repository/publicurl>
            <releases>
                <enabled>trueenabled>
            releases>
        repository>
    repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>publicid>
            <name>aliyun nexusname>
            <url>https://maven.aliyun.com/repository/publicurl>
            <releases>
                <enabled>trueenabled>
            releases>
            <snapshots>
                <enabled>falseenabled>
            snapshots>
        pluginRepository>
    pluginRepositories>
project>

创建子模块

创建两个子模块:common 与 framework:

common

公共模块,其他所有模块都需要引入此模块,里面会存放以下内容

  1. 公共的对象定义类,例如:系统用户、组织架构、权限等。
  2. 公共的maven配置依赖,例如:satoken、gson、mysql数据连接等
  3. 公共的工具方法类,例如:json序列化反序列化、spring容器工具类、金额计算工具类等
  4. 工程的通用设置,例如:项目范围的异常捕获、前后端参数的解析器等

最后的模块结构如下:
搭建SpringBoot3 + Vue3 的快速开发框架(1)_第1张图片

framework

框架模块,框架核心功能实现的模块。会包括所有框架内容,例如:用户管理、组织管理、角色管理、登录退出、系统监控等

搭建SpringBoot3 + Vue3 的快速开发框架(1)_第2张图片

ui

前端模块,使用vite进行项目初始化,参考https://juejin.cn/post/7129777588901249060
选择vue
搭建SpringBoot3 + Vue3 的快速开发框架(1)_第3张图片

启动项目

前端启动

进入ui模块下,先运行

npm install

然后运行

npm run dev

搭建SpringBoot3 + Vue3 的快速开发框架(1)_第4张图片
启动成功,访问地址能看到页面
搭建SpringBoot3 + Vue3 的快速开发框架(1)_第5张图片

后端启动

运行framework模块下的 application启动类
搭建SpringBoot3 + Vue3 的快速开发框架(1)_第6张图片
控制台打印,服务启动成功。

后续内容

项目基本架构搭建完成,后续先完成用户登录的页面和功能,顺带添加对应的一些工程结构

详细源码可以查看:https://gitee.com/SakuraSmiles/freedone

你可能感兴趣的:(java,mybatis,spring,boot)