Skip to content

spring boot demo 是一个用来学习 spring boot 的项目,总共包含 57 个集成demo,已经完成 47 个。包含集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate、JPA(ORM框架)、mybatis(ORM框架)、通用Mapper、PageHelper、mybatis-plus、BeetlSQL、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类…

License

Notifications You must be signed in to change notification settings

fuyanghulin/spring-boot-demo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot Demo

Build Status MIT GitHub stars GitHub forks GitHub watchers

spring boot demo 是一个用来学习 spring boot 的项目,总共包含 57 个集成demo,已经完成 47 个。包含集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate、JPA(ORM框架)、mybatis(ORM框架)、通用Mapper、PageHelper、mybatis-plus、BeetlSQL、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类型邮件)、task(基础定时任务)、quartz(动态管理定时任务)、xxl-job(分布式定时任务)、swagger(API接口管理测试)、security(基于RBAC的动态权限认证)、Session共享、Zookeeper(结合AOP实现分布式锁)、RabbitMQ(消息队列)、websocket(服务端推送监控服务器运行信息)、socket.io(聊天室)、ureport2(中国式报表)、打包成war文件、集成 ElasticSearch(基本操作和高级查询)、Async(异步任务)、集成Dubbo(采用官方的starter)、MongoDB(文档数据库)、neo4j(图数据库)、docker(容器化)、JPA多数据源、Mybatis多数据源、代码生成器、GrayLog(日志收集)、JustAuth(第三方登录)。

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

分支

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

开发环境

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

运行方式

  1. git clone https://github.com/xkcoding/spring-boot-demo.git
  2. 使用 IDEA 打开 clone 下来的项目
  3. 在 IDEA 中打开项目
  4. 在 IDEA 中 Maven Projects 的面板导入根目录下 的 pom.xml
  5. Maven Projects 找不到的童鞋,可以勾上 View -> Tool Buttons ,然后Maven Projects的面板就会出现在IDEA的右侧
  6. 找到各个 module 的 Application 类就可以运行各个 module 了
  7. PS:运行各个 module 之前,请先注意有些模块是需要先初始化数据库数据的。

开发计划

查看 TODO 文件

根目录下的 pom.xml

<?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.xkcoding</groupId>
  <artifactId>spring-boot-demo</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <modules>
    <module>spring-boot-demo-helloworld</module>
    <module>spring-boot-demo-properties</module>
    <module>spring-boot-demo-actuator</module>
    <module>spring-boot-demo-admin-client</module>
    <module>spring-boot-demo-admin-server</module>
    <module>spring-boot-demo-logback</module>
    <module>spring-boot-demo-log-aop</module>
    <module>spring-boot-demo-exception-handler</module>
    <module>spring-boot-demo-template-freemarker</module>
    <module>spring-boot-demo-template-thymeleaf</module>
    <module>spring-boot-demo-template-beetl</module>
    <module>spring-boot-demo-template-enjoy</module>
    <module>spring-boot-demo-orm-jdbctemplate</module>
    <module>spring-boot-demo-orm-jpa</module>
    <module>spring-boot-demo-orm-mybatis</module>
    <module>spring-boot-demo-orm-mybatis-mapper-page</module>
    <module>spring-boot-demo-orm-mybatis-plus</module>
    <module>spring-boot-demo-orm-beetlsql</module>
    <module>spring-boot-demo-upload</module>
    <module>spring-boot-demo-cache-redis</module>
    <module>spring-boot-demo-cache-ehcache</module>
    <module>spring-boot-demo-email</module>
    <module>spring-boot-demo-task</module>
    <module>spring-boot-demo-task-quartz</module>
    <module>spring-boot-demo-task-xxl-job</module>
    <module>spring-boot-demo-swagger</module>
    <module>spring-boot-demo-swagger-beauty</module>
    <module>spring-boot-demo-rbac-security</module>
    <module>spring-boot-demo-rbac-shiro</module>
    <module>spring-boot-demo-session</module>
    <module>spring-boot-demo-oauth</module>
    <module>spring-boot-demo-social</module>
    <module>spring-boot-demo-zookeeper</module>
    <module>spring-boot-demo-mq-rabbitmq</module>
    <module>spring-boot-demo-mq-rocketmq</module>
    <module>spring-boot-demo-mq-kafka</module>
    <module>spring-boot-demo-websocket</module>
    <module>spring-boot-demo-websocket-socketio</module>
    <module>spring-boot-demo-ureport2</module>
    <module>spring-boot-demo-uflo</module>
    <module>spring-boot-demo-urule</module>
    <module>spring-boot-demo-activiti</module>
    <module>spring-boot-demo-async</module>
    <module>spring-boot-demo-dubbo</module>
    <module>spring-boot-demo-war</module>
    <module>spring-boot-demo-elasticsearch</module>
    <module>spring-boot-demo-mongodb</module>
    <module>spring-boot-demo-neo4j</module>
    <module>spring-boot-demo-docker</module>
    <module>spring-boot-demo-multi-datasource-jpa</module>
    <module>spring-boot-demo-multi-datasource-mybatis</module>
    <module>spring-boot-demo-sharding-jdbc</module>
    <module>spring-boot-demo-tio</module>
    <module>spring-boot-demo-codegen</module>
    <module>spring-boot-demo-graylog</module>
  </modules>
  <packaging>pom</packaging>

  <name>spring-boot-demo</name>
  <url>http://xkcoding.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.boot.version>2.1.0.RELEASE</spring.boot.version>
    <mysql.version>8.0.12</mysql.version>
    <hutool.version>4.5.1</hutool.version>
    <guava.version>27.0.1-jre</guava.version>
    <user.agent.version>1.20</user.agent.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <!-- hutool工具类 -->
      <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>${hutool.version}</version>
      </dependency>
      <!-- guava工具类 -->
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <!-- 解析 UserAgent 信息 -->
      <dependency>
        <groupId>eu.bitwalker</groupId>
        <artifactId>UserAgentUtils</artifactId>
        <version>${user.agent.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.20.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${spring.boot.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>repackage</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

各 Module 介绍

Module 名称 Module 介绍
spring-boot-demo-helloworld spring-boot 的一个 helloworld
spring-boot-demo-properties spring-boot 读取配置文件中的内容
spring-boot-demo-actuator spring-boot 集成 spring-boot-starter-actuator 用于监控 spring-boot 的启动和运行状态
spring-boot-demo-admin-client spring-boot 集成 spring-boot-admin 来可视化的监控 spring-boot 程序的运行状态,可以与 actuator 互相搭配使用,客户端示例
spring-boot-demo-admin-server spring-boot 集成 spring-boot-admin 来可视化的监控 spring-boot 程序的运行状态,可以与 actuator 互相搭配使用,服务端示例
spring-boot-demo-logback spring-boot 集成 logback 日志
spring-boot-demo-log-aop spring-boot 使用 AOP 切面的方式记录 web 请求日志
spring-boot-demo-exception-handler spring-boot 统一异常处理,包括2种,第一种返回统一的 json 格式,第二种统一跳转到异常页面
spring-boot-demo-template-freemarker spring-boot 集成 Freemarker 模板引擎
spring-boot-demo-template-thymeleaf spring-boot 集成 Thymeleaf 模板引擎
spring-boot-demo-template-beetl spring-boot 集成 Beetl 模板引擎
spring-boot-demo-template-enjoy spring-boot 集成 Enjoy 模板引擎
spring-boot-demo-orm-jdbctemplate spring-boot 集成 Jdbc Template 操作数据库,并简易封装通用 Dao 层
spring-boot-demo-orm-jpa spring-boot 集成 spring-boot-starter-data-jpa 操作数据库
spring-boot-demo-orm-mybatis spring-boot 集成原生mybatis,使用 mybatis-spring-boot-starter 集成
spring-boot-demo-orm-mybatis-mapper-page spring-boot 集成通用Mapper和PageHelper,使用 mapper-spring-boot-starterpagehelper-spring-boot-starter 集成
spring-boot-demo-orm-mybatis-plus spring-boot 集成 mybatis-plus,使用 mybatis-plus-boot-starter 集成
spring-boot-demo-orm-beetlsql spring-boot 集成 beetl sql,使用 beetl-framework-starter 集成
spring-boot-demo-upload spring-boot 文件上传示例,包含本地文件上传以及七牛云文件上传
spring-boot-demo-cache-redis spring-boot 整合 redis,操作redis中的数据,并使用redis缓存数据
spring-boot-demo-cache-ehcache spring-boot 整合 ehcache,使用 ehcache 缓存数据
spring-boot-demo-email spring-boot 整合 email,包括发送简单文本邮件、HTML邮件(包括模板HTML邮件)、附件邮件、静态资源邮件
spring-boot-demo-task spring-boot 快速实现定时任务
spring-boot-demo-task-quartz spring-boot 整合 quartz,并实现对定时任务的管理,包括新增定时任务,删除定时任务,暂停定时任务,恢复定时任务,修改定时任务启动时间,以及定时任务列表查询,提供前端页面
spring-boot-demo-task-xxl-job spring-boot 整合 xxl-job,并提供绕过 xxl-job-admin 对定时任务的管理的方法,包括定时任务列表,触发器列表,新增定时任务,删除定时任务,停止定时任务,启动定时任务,修改定时任务,手动触发定时任务
spring-boot-demo-swagger spring-boot 集成原生的 swagger 用于统一管理、测试 API 接口
spring-boot-demo-swagger-beauty spring-boot 集成第三方 swagger 美化API文档样式,用于统一管理、测试 API 接口
spring-boot-demo-rbac-security spring-boot 集成 spring security 完成基于RBAC权限模型的权限管理,支持自定义过滤请求,动态权限认证,使用 JWT 安全认证,支持在线人数统计,手动踢出用户等操作
spring-boot-demo-rbac-shiro 待完成
spring-boot-demo-session spring-boot 集成 Spring Session 实现Session共享、重启程序Session不失效
spring-boot-demo-oauth 待完成
spring-boot-demo-social spring-boot 集成 JustAuth 实现 QQ、微信、GitHub 、谷歌、小米等第三方登录
spring-boot-demo-zookeeper spring-boot 集成 Zookeeper 结合AOP实现分布式锁
spring-boot-demo-mq-rabbitmq spring-boot 集成 RabbitMQ 实现基于直接队列模式、分列模式、主题模式、延迟队列的消息发送和接收
spring-boot-demo-mq-rocketmq 待完成
spring-boot-demo-mq-kafka spring-boot 集成 kafka,实现消息的发送和接收
spring-boot-demo-websocket spring-boot 集成 websocket,后端主动推送前端服务器运行信息
spring-boot-demo-websocket-socketio spring-boot 使用 netty-socketio 集成 websocket,实现一个简单的聊天室
spring-boot-demo-ureport2 待完成
spring-boot-demo-uflo 待完成
spring-boot-demo-urule 待完成
spring-boot-demo-activiti 待完成
spring-boot-demo-async spring-boot 使用原生提供的异步任务支持,实现异步执行任务
spring-boot-demo-war spring-boot 打成 war 包的配置
spring-boot-demo-elasticsearch spring-boot 集成 ElasticSearch,集成 spring-boot-starter-data-elasticsearch 完成对 ElasticSearch 的高级使用技巧,包括创建索引、配置映射、删除索引、增删改查基本操作、复杂查询、高级查询、聚合查询等
spring-boot-demo-dubbo spring-boot 集成 Dubbo,分别为公共模块 spring-boot-demo-dubbo-common、服务提供方spring-boot-demo-dubbo-provider、服务调用方spring-boot-demo-dubbo-consumer
spring-boot-demo-mongodb spring-boot 集成 MongoDB,使用官方的 starter 实现增删改查
spring-boot-demo-neo4j spring-boot 集成 Neo4j 图数据库,实现一个校园人物关系网的demo
spring-boot-demo-docker spring-boot 容器化
spring-boot-demo-multi-datasource-jpa spring-boot 使用JPA集成多数据源
spring-boot-demo-multi-datasource-mybatis spring-boot 使用Mybatis集成多数据源,使用 Mybatis-Plus 提供的开源解决方案实现
spring-boot-demo-sharding-jdbc spring-boot 使用 sharding-jdbc 实现分库分表,同时ORM采用 Mybatis-Plus
spring-boot-demo-tio spring-boot 集成 tio 待完成
spring-boot-demo-grpc spring-boot 集成grpc,配置tls/ssl,参见ISSUE#5
spring-boot-demo-codegen spring-boot 集成 velocity 模板技术实现的代码生成器,简化开发
spring-boot-demo-graylog spring-boot 集成 graylog 实现日志统一收集
spring-boot-demo-sso spring-boot 集成 SSO 单点登录,参见 ISSUE#12

官方提供的 starter 介绍

Name Description
spring-boot-starter The core Spring Boot starter, including auto-configuration support, logging and YAML.
spring-boot-starter-actuator Production ready features to help you monitor and manage your application.
spring-boot-starter-amqp are neat
spring-boot-starter-aop Support for aspect-oriented programming including spring-aop and AspectJ.
spring-boot-starter-artemis Support for “Java Message Service API” via Apache Artemis.
spring-boot-starter-batch Support for “Spring Batch” including HSQLDB database.
spring-boot-starter-cache Support for Spring’s Cache abstraction.
spring-boot-starter-cloud-connectors Support for “Spring Cloud Connectors” which simplifies connecting to services in cloud platforms like Cloud Foundry and Heroku.
spring-boot-starter-data-elasticsearch Support for the Elasticsearch search and analytics engine including spring-data-elasticsearch.
spring-boot-starter-data-gemfire Support for the GemFire distributed data store including spring-data-gemfire.
spring-boot-starter-data-jpa Support for the “Java Persistence API” including spring-data-jpa, spring-orm and Hibernate.
spring-boot-starter-data-mongodb Support for the MongoDB NoSQL Database, including spring-data-mongodb.
spring-boot-starter-data-rest Support for exposing Spring Data repositories over REST via spring-data-rest-webmvc.
spring-boot-starter-data-solr Support for the Apache Solr search platform, including spring-data-solr.
spring-boot-starter-freemarker Support for the FreeMarker templating engine.
spring-boot-starter-groovy-templates Support for the Groovy templating engine.
spring-boot-starter-hateoas Support for HATEOAS-based RESTful services via spring-hateoas.
spring-boot-starter-hornetq Support for “Java Message Service API” via HornetQ.
spring-boot-starter-integration Support for common spring-integration modules.
spring-boot-starter-jdbc Support for JDBC databases.
spring-boot-starter-jersey Support for the Jersey RESTful Web Services framework.
spring-boot-starter-jta-atomikos Support for JTA distributed transactions via Atomikos.
spring-boot-starter-jta-bitronix Support for JTA distributed transactions via Bitronix.
spring-boot-starter-mail Support for javax.mail.
spring-boot-starter-mobile Support for spring-mobile.
spring-boot-starter-mustache Support for the Mustache templating engine.
spring-boot-starter-redis Support for the REDIS key-value data store, including spring-redis.
spring-boot-starter-security Support for spring-security.
spring-boot-starter-social-facebook Support for spring-social-facebook.
spring-boot-starter-social-linkedin Support for spring-social-linkedin.
spring-boot-starter-social-twitter Support for spring-social-twitter.
spring-boot-starter-test Support for common test dependencies, including JUnit, Hamcrest and Mockito along with the spring-test module.
spring-boot-starter-thymeleaf Support for the Thymeleaf templating engine, including integration with Spring.
spring-boot-starter-velocity Support for the Velocity templating engine.
spring-boot-starter-web Support for full-stack web development, including Tomcat and spring-webmvc.
spring-boot-starter-websocket Support for WebSocket development.
spring-boot-starter-ws Support for Spring Web Services.

License

MIT

Copyright (c) 2018 Yangkai.Shen

About

spring boot demo 是一个用来学习 spring boot 的项目,总共包含 57 个集成demo,已经完成 47 个。包含集成 actuator(监控)、admin(可视化监控)、logback(日志)、aopLog(通过AOP记录web请求日志)、统一异常处理(json级别和页面级别)、freemarker(模板引擎)、thymeleaf(模板引擎)、Beetl(模板引擎)、Enjoy(模板引擎)、JdbcTemplate、JPA(ORM框架)、mybatis(ORM框架)、通用Mapper、PageHelper、mybatis-plus、BeetlSQL、upload(本地文件上传和七牛云文件上传)、redis(缓存)、ehcache(缓存)、email(发送各种类…

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 89.2%
  • HTML 8.3%
  • PLpgSQL 1.2%
  • TSQL 1.1%
  • Other 0.2%