spring-boot-plus是易于使用,快速,高效,功能丰富,开源的spring boot 脚手架.
Everyone can develop projects independently, quickly and efficiently!
spring-boot-plus 是一套集成 spring boot 常用开发组件的后台快速开发框架
Spring-Boot-Plus 是易于使用,快速,高效,功能丰富,开源的 spring boot 脚手架.
前后端分离, 专注于后端服务
目标
每个人都可以独立、快速、高效地开发项目!
版本库
GITHUB | GITEE
官网
springboot.plus
主要特性
- 集成 spring boot 常用开发组件集、公共配置、AOP 日志等
- 集成 mybatis plus 快速 dao 操作
- 快速生成后台代码: entity/param/vo/controller/service/mapper/xml
- 集成 swagger2,可自动生成 api 文档
- 集成 jwt、shiro/spring security 权限控制
- 集成 redis、spring cache、ehcache 缓存
- 集成 rabbit/rocket/kafka mq 消息队列
- 集成 druid 连接池,JDBC 性能和慢查询检测
- 集成 spring boot admin,实时检测项目运行情况
- 使用 assembly maven 插件进行不同环境打包部署, 包含启动、重启命令,配置文件提取到外部 config 目录
项目架构
项目环境
中间件 | 版本 | 备注 |
---|---|---|
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&characterEncoding=UTF-8&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
快速开始
详细文档
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 管理页面
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 Admin Instances
Spring Boot Admin Statistics
Spring Boot Admin Log
spring-boot-plus Swagger 文档
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.