springBoot+mybatis plus+redis 项目搭建流程

958 阅读6分钟

文章目录

  1. 目的
  2. 项目的初始化
  3. maven注意事项
  4. 集成mybatis plus
  5. 集成redis
  6. spring boot 配置详情
  7. 总结

目的

写这篇文章目的是为了形成一个良好的习惯,做好技术储备帮助自己在技术道路上更进一步,毕竟教就是最好的学,大家一起努力,加油! 有写的不对的地方还望各位大神多多指教,毕竟第一次写,主要是作为自己的记录。

项目的初始化

  • 创建springboot工程可以选择idea中创建项目的spring Initializr 直接创建,或者在进入官网start.spring.io/ 创建
  • 我是直接创建maven工程了,觉得这样方便些
  1. 打开idea 文件->新建->选择项目(我的idea装了汉化包) 然后

c6ca44d4486234e68223fee69279026.png 2.修改3的项目名称,4可以根据自己的实际需求修改 然后点击完成即可

image.png 3.右击项目名称 选择新建->模块 重复刚刚的内容新建子项目

image.png 4.创建子项目 注意1父项目要选择

image.png 5. 删除多余的项目 整个目录结构就完成了

image.png

maven 配置与注意事项

项目结构如下 目前是分了三个工程

```
com.wen     
├── wealth-common     // 工具类
├── wealth-system      // 系统代码
├── wealth-admin       // 后台服务
```

1.现在修改父目录的pom文件 完成一系列编写; 这里多提一句,就下面的父项目而言主要的功能就是为子项目提供依赖包的版本统一管理以及打包方式等,在后续的子项目pom里面你可以看到很多依赖包没有版本设置是因为子项目获取了父项目中的版本号;

<?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>

    <!-- 父工程的 坐标,版本,打包类型信息 -->
    <groupId>com.wen</groupId>
    <artifactId>wealth</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!--这下面是一些备注信息 名称 网址 -->
    <name>wen</name>
    <url>http://www.wen.vip</url>
    <description>财富管理系统</description>

    <!-- 包含了那些子模块 -->
    <modules>
        <module>wealth-admin</module>
        <module>wealth-common</module>
        <module>wealth-system</module>
    </modules>

    <!-- 版本统一管理 -->
    <properties>
        <wen.version>1.0-SNAPSHOT</wen.version>
        <druid.version>1.2.11</druid.version>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <!-- 依赖声明 -->
    <dependencyManagement>
        <dependencies>

            <!-- springBoot的依赖配置 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.7.7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- 德鲁伊数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>

            <!-- web服务 -->
            <dependency>
                <groupId>com.wen</groupId>
                <artifactId>wealth-admin</artifactId>
                <version>${wen.version}</version>
            </dependency>

            <!-- 通用工具 -->
            <dependency>
                <groupId>com.wen</groupId>
                <artifactId>wealth-common</artifactId>
                <version>${wen.version}</version>
            </dependency>

            <!-- 系统代码 -->
            <dependency>
                <groupId>com.wen</groupId>
                <artifactId>wealth-system</artifactId>
                <version>${wen.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <!-- 阿里云仓库 方便拉取jar包 -->
    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <!-- maven 打包插件 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- 插件仓库 -->
    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>
  1. wealth-admin 项目pom文件
<?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">
    <parent>
        <artifactId>wealth</artifactId>
        <groupId>com.wen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <artifactId>wealth-admin</artifactId>

    <description>
        web服务入口
    </description>

    <dependencies>

        <!-- spring-boot-热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional> <!-- 表示依赖不会传递 -->
        </dependency>

        <!-- SpringBoot Web容器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 德鲁伊数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>

        <!-- mysql驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 工具包 -->
        <dependency>
            <groupId>com.wen</groupId>
            <artifactId>wealth-common</artifactId>
        </dependency>

        <!-- 系统代码 -->
        <dependency>
            <groupId>com.wen</groupId>
            <artifactId>wealth-system</artifactId>
        </dependency>

    </dependencies>

</project>
  1. wealth-system 项目pom文件 这里引入mybatis plus 依赖为后续集成做准备
<?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">
    <parent>
        <artifactId>wealth</artifactId>
        <groupId>com.wen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>wealth-system</artifactId>

    <description>
        系统代码
    </description>

    <dependencies>

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- 工具类 -->
        <dependency>
            <groupId>com.wen</groupId>
            <artifactId>wealth-common</artifactId>
        </dependency>

    </dependencies>

</project>

4.wealth-common 项目pom文件 这里是引入的hutool的依赖暂时作为工具类使用,后续可能会自己写工具包. 这里引入redis 依赖为后续集成redis做准备,因为redis可能在所有得子工程中都会用到,所以放在了这里

<?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">
    <parent>
        <artifactId>wealth</artifactId>
        <groupId>com.wen</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>wealth-common</artifactId>

    <description>
        common通用工具
    </description>

    <dependencies>

        <!-- redis 缓存操作 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <!-- hutool工具包 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.11</version>
        </dependency>

    </dependencies>

</project>

5.spring boot 项目启动类注意位置不然读取不到子工程的bean文件

image.png 到这里maven配置已经全部弄完了,接下来开始写建议得代码,集成mybatis plus 和 redis

集成mybatis plus

1.阅读官方文档 baomidou.com/pages/226c2… 可以发现需要

  • 创建库表,导入数据 (这里我使用得是mysql不是官网使用得h2)
  • 搭建sring boot工程,引入依赖包 (上面已经完成)
  • 配置数据库配置 这里使用了德鲁伊连接池(具体可以自己了解下)
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            url: jdbc:mysql://127.0.0.1:3306/wealth?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: 123456
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
  • 在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹 只有添加了这个注解,项目启动时才会去加载mapper,这个一定要添加不然后续会报调用空指针,还有种不需要添加得注解了后续我了解完了再写

image.png

  • 编写实体类 实体类与表是数据映射关系

image.png

  • 创建mapper接口 继承基础mapper

image.png

  • 编写代码,调用mapper 进行数据读取操作 这里使用了mybatis plus得语法糖操作,具体可以查看官方文档

image.png

  • Controller层 代码

image.png

  • 启动代码 调用服务

image.png

以上mybatis plus 集成完毕,关于xml中写自定义sql后续再写

集成redis

1.配置redis连接配置

spring:
  # redis 配置
  redis:
    # 地址
    host: localhost
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 0
    # 密码
    password: 
    # 连接超时时间
    timeout: 10s

2.编写redis工具类

image.png

3.编写调用redis服务代码

image.png

image.png

4.调用服务 成功

image.png

完成redis集成,spring boot中redis得配置相对简单,容易配置,当然也可以自己写config配置,这里只写入门得使用方法,要深入了解可以看官方文档

spring boot 配置详情

1.application.yml

# 开发环境配置
server:
  # 服务器的HTTP端口,默认为8080
  port: 8003
  servlet:
    # 应用的访问路径
    context-path: /

# Spring配置
spring:
  profiles:
    # 引入其他配置文件
    active: druid
  # 服务模块
  devtools:
    restart:
      # 热部署开关
      enabled: true
  # redis 配置
  redis:
    # 地址
    host: localhost
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 0
    # 密码
    password: 
    # 连接超时时间
    timeout: 10s

2.application-druid.yml

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            url: jdbc:mysql://127.0.0.1:3306/wealth?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: 123456
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: wealth
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true

总结

  • 上述操作只是做了一个项目搭建得简单记录,目的是为了尝试下如何用spring boot快速搭建项目开发(确实快),本来想写的更加详细得,最后发现如果真要写那么详细时间不够用,也没必要.
  • 个人建议还是多阅读下优秀得项目源码,看过后启发真的很多,这个项目pom文件得构建,以及项目结构 参考了RuoYi项目,这个项目得结构清晰程度是我目前见过最好得
  • 时间比较匆忙以及篇幅有限,所以项目结构比较简单,后续我还会出spring boot 集成 spring security 用来做安全验证得篇章 以及集成其他的服务,搭建成一个高可用高并发高性能的项目