Spring Boot Demo是一个用于深入学习和实践Spring Boot的项目,包含了66个集成demo,目标是让开发者能够通过实际操作来掌握Spring Boot的各种功能和最佳实践。

项目集成内容

Spring Boot Demo项目已经成功集成了多个常用的技术和框架,包括:

• Actuator(监控)

• Admin(可视化监控)

• Logback(日志)

• AOPLog(通过AOP记录Web请求日志)

• 统一异常处理(JSON级别和页面级别)

• FreeMarker(模板引擎)

• Thymeleaf(模板引擎)

• Beetl(模板引擎)

• Enjoy(模板引擎)

• JdbcTemplate(通用JDBC操作数据库)

• JPA(强大的ORM框架)

• MyBatis(强大的ORM框架)

• 通用Mapper(快速操作MyBatis)

• PageHelper(通用的MyBatis分页插件)

• MyBatis-Plus(快速操作MyBatis)

• BeetlSQL(强大的ORM框架)

• 文件上传(本地文件上传和七牛云文件上传)

• Redis(缓存)

• Ehcache(缓存)

• Email(发送各种类型邮件)

• Task(基础定时任务)

• Quartz(动态管理定时任务)

• Xxl-Job(分布式定时任务)

• Swagger(API接口管理测试)

• Security(基于RBAC的动态权限认证)

• SpringSession(Session共享)

• Zookeeper(结合AOP实现分布式锁)

• RabbitMQ(消息队列)

• Kafka(消息队列)

• WebSocket(服务端推送监控服务器运行信息)

• Socket.IO(聊天室)

• UReport2(中国式报表)

• 打包成war文件

• ElasticSearch(基本操作和高级查询)

• Async(异步任务)

• Dubbo(采用官方的starter)

• MongoDB(文档数据库)

• Neo4j(图数据库)

• Docker(容器化)

• JPA多数据源

• MyBatis多数据源

• 代码生成器

• GrayLog(日志收集)

• JustAuth(第三方登录)

• LDAP(增删改查)

• 动态添加/切换数据源

• 单机限流(AOP + Guava RateLimiter)

• 分布式限流(AOP + Redis + Lua)

• ElasticSearch 7.x(使用官方Rest High Level Client)

• HTTPS

• Flyway(数据库初始化)

项目分支

Master分支:基于Spring Boot版本2.1.0.RELEASE,主要用于管理每个Module的通用依赖版本,方便开发者学习。

v-1.5.x分支:基于Spring Boot版本1.5.8.RELEASE,每个Module均依赖spring-boot-demo-parent。该分支对新手不太友好,因Spring Boot已经升级到2.x版本,该分支的开发维护将逐步停止,所有内容会同步到master分支。

开发环境

• JDK 1.8

• Maven 3.5

• IntelliJ IDEA ULTIMATE 2018.2(建议使用IDEA开发,并确保安装了lombok插件)

• MySQL 5.7(建议使用5.7版本以上,因为5.7版本增加了一些新特性,但不向下兼容)

运行方式

1、克隆项目:git clone https://github.com/xkcoding/spring-boot-demo.git

2、使用IDEA打开克隆下来的项目。

3、在IDEA中,通过Maven Projects面板导入项目根目录下的pom.xml文件。

4、找到各个Module的Application类,就能运行各个demo。

5、每个demo都有详细的README文件,建议在运行前阅读。

开源推荐

• Pig:宇宙最强微服务认证授权脚手架(架构师必备),Pig GitHub仓库

Module介绍

项目中的每个Module都提供了具体的功能演示:

demo-properties:Spring Boot读取配置文件中的内容。

demo-actuator:Spring Boot集成spring-boot-starter-actuator用于监控Spring Boot的启动和运行状态。

demo-admin-client:Spring Boot集成spring-boot-admin来可视化监控Spring Boot程序的运行状态。

demo-log-aop:使用AOP切面记录Web请求日志。

demo-exception-handler:统一异常处理,包括返回统一的JSON格式和跳转到异常页面。

demo-orm-jdbctemplate:集成JdbcTemplate操作数据库,并简易封装通用Dao层。

demo-orm-jpa:集成spring-boot-starter-data-jpa操作数据库。

demo-orm-mybatis:集成原生mybatis,使用mybatis-spring-boot-starter集成。

demo-upload:文件上传示例,包含本地文件上传以及七牛云文件上传。

demo-cache-redis:整合Redis,操作Redis中的数据,并使用Redis缓存数据。

demo-email:整合Email,包括发送简单文本邮件、HTML邮件、附件邮件、静态资源邮件。

demo-task:快速实现定时任务。

demo-task-quartz:整合Quartz,并实现对定时任务的管理。

demo-task-xxl-job:整合Xxl-Job,并提供绕过Xxl-Job-Admin对定时任务的管理方法。

demo-swagger:集成原生的Swagger用于统一管理、测试API接口。

demo-swagger-beauty:集成第三方Swagger-Bootstrap-UI美化API文档样式。

demo-rbac-security:集成Spring Security完成基于RBAC权限模型的权限管理。

demo-rbac-shiro:集成Shiro实现权限管理。

demo-mq-rabbitmq:集成RabbitMQ实现基于直接队列模式、分列模式、主题模式、延迟队列的消息发送和接收。

demo-mq-rocketmq:集成RocketMQ,实现消息的发送和接收。

demo-mq-kafka:集成Kafka,实现消息的发送和接收。

demo-websocket:集成WebSocket,后端主动推送前端服务器运行信息。

demo-ureport2:集成UReport2实现复杂的自定义的中国式报表。

demo-async:使用原生提供的异步任务支持,实现异步执行任务。

demo-elasticsearch:集成ElasticSearch,完成对ElasticSearch的高级使用技巧。

demo-dubbo:集成Dubbo,分别为公共模块、服务提供方、服务调用方。

demo-mongodb:集成MongoDB,使用官方的starter实现增删改查。

demo-neo4j:集成Neo4j图数据库,实现一个校园人物关系网的demo。

demo-multi-datasource-mybatis:使用Mybatis集成多数据源。

demo-sharding-jdbc:使用sharding-jdbc实现分库分表。

demo-graylog:集成graylog实现日志统一收集。

demo-sso:集成SSO单点登录。

demo-ldap:集成LDAP,完成对LDAP的基本CURD操作。

demo-ratelimit-redis:使用Redis + Lua脚本实现分布式限流。

demo-elasticsearch-rest-high-level-client:集成ElasticSearch 7.x版本,使用官方Rest High Level Client操作ES数据。

demo-flyway:集成Flyway,项目启动时初始化数据库表结构。

demo-ureport2:集成UReport2,实现中国式复杂报表设计。