MCPcopy
hub / github.com/xkcoding/spring-boot-demo

github.com/xkcoding/spring-boot-demo @main sqlite

repository ↗ · DeepWiki ↗
1,977 symbols 5,513 edges 493 files 870 documented · 44%
README

Spring Boot Demo

Travis-CI Codacy author JDK Spring Boot LICENSE

star star star

中文 | English

项目简介

spring boot demo 是一个用来深度学习并实战 spring boot 的项目,目前总共包含 66 个集成demo,已经完成 55 个。

该项目已成功集成 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框架)、upload(本地文件上传和七牛云文件上传)、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(数据库初始化)、UReport2(中国式复杂报表)。

如果大家还有想要集成的demo,也可在 issue 里提需求。我会额外添加在 TODO 列表里。✊

分支介绍

  • master 分支:基于 Spring Boot 版本 2.1.0.RELEASE,每个 Module 的 parent 依赖根目录下的 pom.xml,主要用于管理每个 Module 的通用依赖版本,方便大家学习。
  • v-1.5.x 分支:基于 Spring Boot 版本 1.5.8.RELEASE,每个 Module 均依赖 spring-boot-demo-parent,有挺多同学们反映这种方式对新手不是很友好,运行起来有些难度,因此 此分支(v-1.5.x)会停止开发维护 ,所有内容会慢慢以 master 分支的形式同步过去,此分支暂未完成的,也会直接在 master 分支上加,在此分支学习的同学们,仍然可以在此分支学习,但是建议后期切换到master分支,会更加容易,毕竟官方已经将 Spring Boot 升级到 2.x 版本。🙂

开发环境

  • JDK 1.8 +
  • Maven 3.5 +
  • IntelliJ IDEA ULTIMATE 2018.2 + (注意:务必使用 IDEA 开发,同时保证安装 lombok 插件)
  • Mysql 5.7 + (尽量保证使用 5.7 版本以上,因为 5.7 版本加了一些新特性,同时不向下兼容。本 demo 里会尽量避免这种不兼容的地方,但还是建议尽量保证 5.7 版本以上)

运行方式

提示:如果是 fork 的朋友,同步代码的请参考:https://xkcoding.com/2018/09/18/how-to-update-the-fork-project.html

  1. git clone https://github.com/xkcoding/spring-boot-demo.git
  2. 使用 IDEA 打开 clone 下来的项目
  3. 在 IDEA 中 Maven Projects 的面板导入项目根目录下 的 pom.xml 文件
  4. Maven Projects 找不到的童鞋,可以勾上 IDEA 顶部工具栏的 View -> Tool Buttons ,然后 Maven Projects 的面板就会出现在 IDEA 的右侧
  5. 找到各个 Module 的 Application 类就可以运行各个 demo 了
  6. 注意:每个 demo 均有详细的 README 配套,食用 demo 前记得先看看哦~
  7. 注意:运行各个 demo 之前,有些是需要事先初始化数据库数据的,亲们别忘记了哦~

项目趋势

Stargazers over time

其他

团队纳新

组内招人啦,HC 巨多,Base 杭州,感兴趣的小伙伴,查看 岗位详情

开源推荐

11628591293_.pic_hd

  • JustAuth:史上最全的整合第三方登录的开源库,https://github.com/justauth/JustAuth
  • Mica:SpringBoot 微服务高效开发工具集,https://github.com/lets-mica/mica
  • awesome-collector:https://github.com/P-P-X/awesome-collector
  • SpringBlade:完整的线上解决方案(企业开发必备),https://github.com/chillzhuang/SpringBlade
  • Pig:宇宙最强微服务认证授权脚手架(架构师必备),https://github.com/pigxcloud/pig

开发计划

查看 TODO 文件

各 Module 介绍

Module 名称 Module 介绍
demo-helloworld spring-boot 的一个 helloworld
demo-properties spring-boot 读取配置文件中的内容
demo-actuator spring-boot 集成 spring-boot-starter-actuator 用于监控 spring-boot 的启动和运行状态
demo-admin-client spring-boot 集成 spring-boot-admin 来可视化的监控 spring-boot 程序的运行状态,可以与 actuator 互相搭配使用,客户端示例
demo-admin-server spring-boot 集成 spring-boot-admin 来可视化的监控 spring-boot 程序的运行状态,可以与 actuator 互相搭配使用,服务端示例
demo-logback spring-boot 集成 logback 日志
demo-log-aop spring-boot 使用 AOP 切面的方式记录 web 请求日志
demo-exception-handler spring-boot 统一异常处理,包括2种,第一种返回统一的 json 格式,第二种统一跳转到异常页面
demo-template-freemarker spring-boot 集成 Freemarker 模板引擎
demo-template-thymeleaf spring-boot 集成 Thymeleaf 模板引擎
demo-template-beetl spring-boot 集成 Beetl 模板引擎
demo-template-enjoy spring-boot 集成 Enjoy 模板引擎
demo-orm-jdbctemplate spring-boot 集成 Jdbc Template 操作数据库,并简易封装通用 Dao 层
demo-orm-jpa spring-boot 集成 spring-boot-starter-data-jpa 操作数据库
demo-orm-mybatis spring-boot 集成原生mybatis,使用 mybatis-spring-boot-starter 集成
demo-orm-mybatis-mapper-page spring-boot 集成通用MapperPageHelper,使用 mapper-spring-boot-starterpagehelper-spring-boot-starter 集成
demo-orm-mybatis-plus spring-boot 集成 mybatis-plus,使用 mybatis-plus-boot-starter 集成,集成 BaseMapper、BaseService、ActiveRecord 操作数据库
demo-orm-beetlsql spring-boot 集成 beetl-sql,使用 beetl-framework-starter 集成
demo-upload spring-boot 文件上传示例,包含本地文件上传以及七牛云文件上传
demo-cache-redis spring-boot 整合 redis,操作redis中的数据,并使用redis缓存数据
demo-cache-ehcache spring-boot 整合 ehcache,使用 ehcache 缓存数据
demo-email spring-boot 整合 email,包括发送简单文本邮件、HTML邮件(包括模板HTML邮件)、附件邮件、静态资源邮件
demo-task spring-boot 快速实现定时任务
demo-task-quartz spring-boot 整合 quartz,并实现对定时任务的管理,包括新增定时任务,删除定时任务,暂停定时任务,恢复定时任务,修改定时任务启动时间,以及定时任务列表查询,提供前端页面
demo-task-xxl-job spring-boot 整合xxl-job,并提供绕过 xxl-job-admin 对定时任务的管理的方法,包括定时任务列表,触发器列表,新增定时任务,删除定时任务,停止定时任务,启动定时任务,修改定时任务,手动触发定时任务
demo-swagger spring-boot 集成原生的 swagger 用于统一管理、测试 API 接口
demo-swagger-beauty spring-boot 集成第三方 swagger swagger-bootstrap-ui 美化API文档样式,用于统一管理、测试 API 接口
demo-rbac-security spring-boot 集成 spring security 完成基于RBAC权限模型的权限管理,支持自定义过滤请求,动态权限认证,使用 JWT 安全认证,支持在线人数统计,手动踢出用户等操作
demo-rbac-shiro spring-boot 集成 shiro 实现权限管理

待完成 | | demo-session | spring-boot 集成 Spring Session 实现Session共享、重启程序Session不失效 | | demo-oauth | spring-boot 实现 oauth 服务器功能,实现授权码机制

待完成 | | demo-social | spring-boot 集成第三方登录,集成 justauth-spring-boot-starter 实现QQ登录、GitHub登录、微信登录、谷歌登录、微软登录、小米登录、企业微信登录。 | | demo-zookeeper | spring-boot 集成 Zookeeper 结合AOP实现分布式锁 | | demo-mq-rabbitmq | spring-boot 集成 RabbitMQ 实现基于直接队列模式、分列模式、主题模式、延迟队列的消息发送和接收 | | demo-mq-rocketmq | spring-boot 集成 RocketMQ,实现消息的发送和接收

待完成 | | demo-mq-kafka | spring-boot 集成 kafka,实现消息的发送和接收 | | demo-websocket | spring-boot 集成 websocket,后端主动推送前端服务器运行信息 | | demo-websocket-socketio | spring-boot 使用 netty-socketio 集成 websocket,实现一个简单的聊天室 | | demo-ureport2 | spring-boot 集成 ureport2 实现复杂的自定义的中国式报表

待完成 | | demo-uflo | spring-boot 集成 uflo 快速实现轻量级流程引擎

待完成 | | demo-urule | spring-boot 集成 urule 快速实现规则引擎

待完成 | | demo-activiti | spring-boot 集成 activiti 7 流程引擎

待完成 | | demo-async | spring-boot 使用原生提供的异步任务支持,实现异步执行任务 | | demo-war | spring-boot 打成 war 包的配置 | | demo-elasticsearch | spring-boot 集成 ElasticSearch,集成 spring-boot-starter-data-elasticsearch 完成对 ElasticSearch 的高级使用技巧,包括创建索引、配置映射、删除索引、增删改查基本操作、复杂查询、高级查询、聚合查询等 | | demo-dubbo | spring-boot 集成 Dubbo,分别为公共模块 spring-boot-demo-dubbo-common、服务提供方spring-boot-demo-dubbo-provider、服务调用方spring-boot-demo-dubbo-consumer | | demo-mongodb | spring-boot 集成 MongoDB,使用官方的 starter 实现增删改查 | | demo-neo4j | spring-boot 集成 Neo4j 图数据库,实现一个校园人物关系网的demo | | demo-docker | spring-boot 容器化 | | demo-multi-datasource-jpa | spring-boot 使用JPA集成多数据源 | | demo-multi-datasource-mybatis | spring-boot 使用Mybatis集成多数据源,使用 Mybatis-Plus 提供的开源解决方案实现 | | demo-sharding-jdbc | spring-boot 使用 sharding-jdbc 实现分库分表,同时ORM采用 Mybatis-Plus | | demo-tio | spring-boot 集成 tio 网络编程框架

待完成 | | demo-grpc | spring-boot 集成grpc,配置tls/ssl,参见ISSUE#5

待完成 | | demo-codegen | spring-boot 集成 velocity 模板技术实现的代码生成器,简化开发 | | demo-graylog | spring-boot 集成 graylog 实现日志统一收集 | | demo-sso | spring-boot 集成 SSO 单点登录,参见 ISSUE#12

待完成 | | demo-ldap | spring-boot 集成 LDAP,集成 spring-boot-starter-data-ldap 完成对 Ldap 的基本 CURD操作, 并给出以登录为实战的 API 示例,参见 ISSUE#23,感谢 @fxbin | | demo-dynamic-datasource | spring-boot 动态添加数据源、动态切换数据源 | | demo-ratelimit-guava | spring-boot 使用 Guava RateLimiter 实现单机版限流,保护 API | | demo-ratelimit-redis

Extension points exported contracts — how you extend this code

BaseJob (Interface)
Job 基类,主要是在 org.quartz.Job 上再封装一层,只让我们自己项目里的Job去实现 @author yangkai.shen @date Created in 2018-11-26 13 [5 implementers]
demo-task-quartz/src/main/java/com/xkcoding/task/quartz/job/base/BaseJob.java
HelloService (Interface)
Hello服务接口 @author yangkai.shen @date Created in 2018-12-25 16:56 [4 implementers]
demo-dubbo/dubbo-common/src/main/java/com/xkcoding/dubbo/common/service/HelloService.java
IUserService (Interface)
User Service @author yangkai.shen @date Created in 2018-10-15 13:51 [3 implementers]
demo-orm-jdbctemplate/src/main/java/com/xkcoding/orm/jdbctemplate/service/IUserService.java
MailService (Interface)
邮件接口 @author yangkai.shen @date Created in 2018-11-21 11:16 [3 implementers]
demo-email/src/main/java/com/xkcoding/email/service/MailService.java
CodeGenService (Interface)
代码生成器 @author yangkai.shen @date Created in 2019-03-22 10:15 [3 implementers]
demo-codegen/src/main/java/com/xkcoding/codegen/service/CodeGenService.java
SysClientDetailsService (Interface)
声明自己的实现. 参见 ClientRegistrationService @author EchoCow @date 2020-01-06 13:39 [2 implementers]
demo-oauth/oauth-authorization-server/src/main/java/com/xkcoding/oauth/service/SysClientDetailsService.java
IQiNiuService (Interface)
七牛云上传Service @author yangkai.shen @date Created in 2018-11-06 17:21 [2 implementers]
demo-upload/src/main/java/com/xkcoding/upload/service/IQiNiuService.java
UserService (Interface)
UserService @author yangkai.shen @date Created in 2018-11-16 16:53 [1 implementers]
demo-cache-ehcache/src/main/java/com/xkcoding/cache/ehcache/service/UserService.java

Core symbols most depended-on inside this repo

run
called by 72
demo-websocket-socketio/src/main/java/com/xkcoding/websocket/socketio/init/ServerRunner.java
get
called by 70
demo-cache-redis/src/main/java/com/xkcoding/cache/redis/service/UserService.java
create
called by 65
demo-websocket/src/main/java/com/xkcoding/websocket/payload/ServerVO.java
debug
called by 65
demo-websocket-socketio/src/main/resources/static/js/socket.io/socket.io.js
put
called by 62
demo-swagger/src/main/java/com/xkcoding/swagger/controller/UserController.java
toString
called by 55
demo-rbac-security/src/main/java/com/xkcoding/rbac/security/common/Status.java
save
called by 33
demo-ldap/src/main/java/com/xkcoding/ldap/service/PersonService.java
getName
called by 32
demo-websocket/src/main/java/com/xkcoding/websocket/model/server/Jvm.java

Shape

Method 927
Function 572
Class 410
Interface 59
Enum 9

Languages

Java71%
TypeScript29%

Modules by API surface

demo-codegen/src/main/resources/static/libs/vue/vue.min.js247 symbols
demo-websocket-socketio/src/main/resources/static/js/socket.io/socket.io.js99 symbols
demo-websocket-socketio/src/main/resources/static/js/jquery-1.10.1.min.js78 symbols
demo-codegen/src/main/resources/static/libs/iview/iview.min.js53 symbols
demo-websocket/src/main/resources/static/js/sockjs.min.js37 symbols
demo-codegen/src/main/resources/static/libs/axios/axios.min.js22 symbols
demo-websocket-socketio/src/main/resources/static/js/moment.min.js20 symbols
demo-websocket/src/main/java/com/xkcoding/websocket/model/server/Jvm.java18 symbols
demo-websocket/src/main/java/com/xkcoding/websocket/model/Server.java17 symbols
demo-websocket/src/main/java/com/xkcoding/websocket/model/server/SysFile.java15 symbols
demo-mq-rabbitmq/src/main/java/com/xkcoding/mq/rabbitmq/config/RabbitMqConfig.java15 symbols
demo-codegen/src/main/resources/static/libs/datejs/date-zh-CN.js14 symbols

Dependencies from manifests, versioned

${project.groupId}:dubbo-common
cn.hutool:hutool-all
com.101tec:zkclient
com.alibaba.spring.boot:dubbo-spring-boot-starter
com.alipay.sdk:alipay-sdk-java4.10.159.ALL · 1×
com.baomidou:dynamic-datasource-spring-boot-starter2.5.0 · 1×
com.baomidou:mybatis-plus-boot-starter3.1.0 · 1×
com.battcn:swagger-spring-boot-starter
com.github.javen205:IJPay-All
com.github.oshi:oshi-core
com.github.pagehelper:pagehelper-spring-boot-starter

Datastores touched

(mysql)Database · 1 repos
spring-boot-demoDatabase · 1 repos
spring-boot-demo-2Database · 1 repos
flyway-testDatabase · 1 repos
oauthDatabase · 1 repos
xxl_jobDatabase · 1 repos

For agents

$ claude mcp add spring-boot-demo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact