spring-boot-plus是易于使用,快速,高效,功能丰富,开源的spring boot 脚手架.

spring-boot-plus logo

Everyone can develop projects independently, quickly and efficiently!

spring-boot-plus version spring boot version code style

spring-boot-plus 是一套集成 spring boot 常用开发组件的后台快速开发框架

Spring-Boot-Plus 是易于使用,快速,高效,功能丰富,开源的 spring boot 脚手架.

前后端分离, 专注于后端服务

目标

每个人都可以独立、快速、高效地开发项目!

版本库

GITHUB | GITEE

官网

springboot.plus

主要特性

  1. 集成 spring boot 常用开发组件集、公共配置、AOP 日志等
  2. 集成 mybatis plus 快速 dao 操作
  3. 快速生成后台代码: entity/param/vo/controller/service/mapper/xml
  4. 集成 swagger2,可自动生成 api 文档
  5. 集成 jwt、shiro/spring security 权限控制
  6. 集成 redis、spring cache、ehcache 缓存
  7. 集成 rabbit/rocket/kafka mq 消息队列
  8. 集成 druid 连接池,JDBC 性能和慢查询检测
  9. 集成 spring boot admin,实时检测项目运行情况
  10. 使用 assembly maven 插件进行不同环境打包部署, 包含启动、重启命令,配置文件提取到外部 config 目录

项目架构

spring-boot-plus-architecture.jpg

项目环境

中间件 版本 备注
JDK 1.8+ JDK1.8 及以上
MySQL 5.7+ 5.7 及以上
Redis 3.2+

技术选型

技术 版本 备注
Spring Boot 2.2.0.RELEASE 最新发布稳定版
Spring Framework 5.2.0.RELEASE 最新发布稳定版
Mybatis 3.5.2 持久层框架
Mybatis Plus 3.2.0 mybatis 增强框架
Alibaba Druid 1.1.20 数据源
Fastjson 1.2.62 JSON 处理工具集
swagger2 2.6.1 api 文档生成工具
commons-lang3 3.9 常用工具包
commons-io 2.6 IO 工具包
commons-codec 1.13 加密解密等工具包
commons-collections4 4.4 集合工具包
reflections 0.9.11 反射工具包
hibernate-validator 6.0.17.Final 后台参数校验注解
Shiro 1.4.1 权限控制
JWT 3.8.3 JSON WEB TOKEN
hutool-all 5.0.3 常用工具集
lombok 1.18.10 注解生成 Java Bean 等工具
mapstruct 1.3.1.Final 对象属性复制工具

CHANGELOG

CHANGELOG.md

Java Docs

Java Api Docs

使用

克隆 spring-boot-plus

git clone https://github.com/geekidea/spring-boot-plus.git
cd spring-boot-plus

Maven 构建

默认使用 local 环境, 对应配置文件:application-local.yml

mvn clean package -Plocal

5 分钟完成增删改查

1. 创建数据库表

-- ----------------------------
-- Table structure for foo_bar
-- ----------------------------
DROP TABLE IF EXISTS `foo_bar`;
CREATE TABLE `foo_bar`
(
    `id`            bigint(20)  NOT NULL COMMENT '主键',
    `name`          varchar(20) NOT NULL COMMENT '名称',
    `foo`           varchar(20)          DEFAULT NULL COMMENT 'Foo',
    `bar`           varchar(20) NOT NULL COMMENT 'Bar',
    `remark`        varchar(200)         DEFAULT NULL COMMENT '备注',
    `state`         int(11)     NOT NULL DEFAULT '1' COMMENT '状态,0:禁用,1:启用',
    `version`       int(11)     NOT NULL DEFAULT '0' COMMENT '版本',
    `create_time`   timestamp   NULL     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`   timestamp   NULL     DEFAULT NULL COMMENT '修改时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_general_ci COMMENT ='FooBar';

-- ----------------------------
-- Records of foo_bar
-- ----------------------------
INSERT INTO foo_bar (id, name, foo, bar, remark, state, version, create_time, update_time)
VALUES (1, 'FooBar', 'foo', 'bar', 'remark...', 1, 0, '2019-11-01 14:05:14', null);
INSERT INTO foo_bar (id, name, foo, bar, remark, state, version, create_time, update_time)
VALUES (2, 'HelloWorld', 'hello', 'world', null, 1, 0, '2019-11-01 14:05:14', null);

2. 使用代码生成器生成增删改查代码

修改数据库信息

修改组件名称 / 作者 / 数据库表名称 / 主键 id

/src/test/java/io/geekidea/springbootplus/test/SpringBootPlusGenerator.java
/**
 * spring-boot-plus 代码生成器入口类
 *
 * @author geekidea
 * @date 2019-10-22
 **/
public class SpringBootPlusGenerator {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
    <span class="hljs-type">CodeGenerator</span> <span class="hljs-variable">codeGenerator</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">CodeGenerator</span>();
    <span class="hljs-comment">// 公共配置</span>
    <span class="hljs-comment">// 数据库配置</span>
    codeGenerator
            .setUserName(<span class="hljs-string">"root"</span>)
            .setPassword(<span class="hljs-string">"root"</span>)
            .setDriverName(<span class="hljs-string">"com.mysql.jdbc.Driver"</span>)
            .setDriverUrl(<span class="hljs-string">"jdbc:mysql://localhost:3306/spring_boot_plus?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false"</span>);

    <span class="hljs-comment">// 包信息</span>
    codeGenerator
            .setProjectPackagePath(<span class="hljs-string">"io/geekidea/springbootplus"</span>)
            .setParentPackage(<span class="hljs-string">"io.geekidea.springbootplus"</span>);

    <span class="hljs-comment">// 组件作者等配置</span>
    codeGenerator
            .setModuleName(<span class="hljs-string">"foobar"</span>)
            .setAuthor(<span class="hljs-string">"geekidea"</span>)
            .setPkIdColumnName(<span class="hljs-string">"id"</span>);

    <span class="hljs-comment">// 生成策略</span>
    codeGenerator
            .setGeneratorStrategy(CodeGenerator.GeneratorStrategy.ALL)
            .setPageListOrder(<span class="hljs-literal">true</span>)
            .setParamValidation(<span class="hljs-literal">true</span>);

    <span class="hljs-comment">// 生成实体映射相关代码,可用于数据库字段更新</span>
    <span class="hljs-comment">// 当数据库字段更新时,可自定义自动生成哪些那文件</span>
    codeGenerator
            .setGeneratorEntity(<span class="hljs-literal">true</span>)
            .setGeneratorQueryParam(<span class="hljs-literal">true</span>)
            .setGeneratorQueryVo(<span class="hljs-literal">true</span>);

    <span class="hljs-comment">// 生成业务相关代码</span>
    codeGenerator
            .setGeneratorController(<span class="hljs-literal">true</span>)
            .setGeneratorService(<span class="hljs-literal">true</span>)
            .setGeneratorServiceImpl(<span class="hljs-literal">true</span>)
            .setGeneratorMapper(<span class="hljs-literal">true</span>)
            .setGeneratorMapperXml(<span class="hljs-literal">true</span>);

    <span class="hljs-comment">// 是否生成Shiro RequiresPermissions注解</span>
    codeGenerator.setRequiresPermissions(<span class="hljs-literal">false</span>);

    <span class="hljs-comment">// 是否覆盖已有文件</span>
    codeGenerator.setFileOverride(<span class="hljs-literal">true</span>);

    <span class="hljs-comment">// 初始化公共变量</span>
    codeGenerator.init();

    <span class="hljs-comment">// 需要生成的表数组</span>
    <span class="hljs-comment">// xxx,yyy,zzz为需要生成代码的表名称</span>
    String[] tables = {
            <span class="hljs-string">"foo_bar"</span>
    };

    <span class="hljs-comment">// 循环生成</span>
    <span class="hljs-keyword">for</span> (String table : tables) {
        <span class="hljs-comment">// 设置需要生成的表名称</span>
        codeGenerator.setTableName(table);
        <span class="hljs-comment">// 生成代码</span>
        codeGenerator.generator();
    }

}

}

生成的代码结构

/src/main/java/io/geekidea/springbootplus/foobar
└── foobar
    ├── controller
    │   └── FooBarController.java
    ├── entity
    │   └── FooBar.java
    ├── mapper
    │   └── FooBarMapper.java
    ├── param
    │   └── FooBarQueryParam.java
    ├── service
    │   ├── FooBarService.java
    │   └── impl
    │       └── FooBarServiceImpl.java
    └── vo
        └── FooBarQueryVo.java

Mapper XML

/src/main/resources/mapper/foobar/FooBarMapper.xml

3. 启动项目

项目入口类

/src/main/java/io/geekidea/springbootplus/SpringBootPlusApplication.java
/**
 * spring-boot-plus 项目启动入口
 * @author geekidea
 * @since 2018-11-08
 */
@EnableAsync
@EnableScheduling
@EnableTransactionManagement
@EnableConfigurationProperties
@EnableAdminServer
@MapperScan({"io.geekidea.springbootplus.**.mapper"})
@SpringBootApplication
public class SpringBootPlusApplication {
<span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> {
    <span class="hljs-comment">// 启动spring-boot-plus</span>
    <span class="hljs-type">ConfigurableApplicationContext</span> <span class="hljs-variable">context</span> <span class="hljs-operator">=</span> SpringApplication.run(SpringBootPlusApplication.class, args);
    <span class="hljs-comment">// 打印项目信息</span>
    PrintApplicationInfo.print(context);
}

}

4. 访问项目 swagger 文档

http://127.0.0.1:8888/swagger-ui.html

5. 系统用户 增删改查分页 Swagger

sys_user_swagger-zh.png

快速开始

快速开始

详细文档

https://springboot.plus

CentOS 快速安装环境 / 构建 / 部署 / 启动 spring-boot-plus 项目

1. 下载安装脚本

安装 jdk, git, maven, redis, mysql

wget -O download-install-all.sh https://springboot.plus/bin/download-install-all.sh

2. 运行安装脚本

sh download-install-all.sh

3. 修改 MySQL 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Springbootplus666!';
exit
mysql -uroot -pSpringbootplus666!

4. 导入 MySQL 脚本

create database if not exists spring_boot_plus character set utf8mb4;
use spring_boot_plus;
source /root/mysql_spring_boot_plus.sql;
show tables;
exit

5. 下载部署脚本 deploy.sh

wget -O deploy.sh https://springboot.plus/bin/deploy.sh

6. 执行脚本

sh deploy.sh

7. 访问项目

SpringBootAdmin 管理页面

http://47.105.159.10:8888

spring-boot-plus Swagger 文档页面

http://47.105.159.10:8888/docs

8. 查看项目运行日志

tail -f -n 1000 /root/spring-boot-plus-server/logs/spring-boot-plus.log

spring-boot-plus Views

spring-boot-plus IDEA Sources Views

spring-boot-plus-idea

Spring Boot Admin Instances

spring-boot-admin instances

Spring Boot Admin Statistics

spring-boot-admin statistics

Spring Boot Admin Log

spring-boot-admin log

spring-boot-plus Swagger 文档

spring-boot-plus swagger docs

spring-boot-plus Java Api Docs

spring-boot-plus Java Api Docs

spring-boot-plus 视频 🎥

License

spring-boot-plus is under the Apache 2.0 license. See the LICENSE file for details.