Skip to content

Latest commit

 

History

History
334 lines (302 loc) · 27.2 KB

README.en.md

File metadata and controls

334 lines (302 loc) · 27.2 KB

Travis-CI author JDK Spring Boot LICENSE

star star star

English | 中文

Introduction

spring boot demo is a project for learning and practice spring boot, with a total of 57 integrated demos, and 47 have been completed.

The project has successfully integrated actuator (monitoring), admin (visual monitoring), logback (log), aopLog (recording web request logs through AOP), global exception handling (json level and page level ), freemarker (template engine), thymeleaf (template engine), Beetl (template engine), Enjoy (template engine), JdbcTemplate (general JDBC operate database), JPA (powerful ORM framework ), mybatis (powerful ORM framework), Generic Mapper (mybatis quick operation ), PageHelper (powerful mybatis pagination plugin), mybatis-plus (mybatis quick operation), BeetlSQL (powerful ORM framework ), upload (local file upload and qiniu cloud file upload), redis (cache), ehcache (cache), email (send various types of mail), task (basic scheduled tasks), quartz (dynamic management scheduled tasks), xxl-job (distributed scheduled tasks), swagger (API interface management and tests), security (RBAC-based Dynamic Rights Authentication), SpringSession (session sharing), Zookeeper (implement distributed locks by AOP), RabbitMQ (message queue), Kafka (message queue), websocket (server pushes the monitoring server status to front end), socket.io (chat room), ureport2 (Chinese-style report), packaged into a war file, integrates ElasticSearch (basic operations and advanced queries), Async ( asynchronous tasks), integrated Dubbo (with official starter), MongoDB (document database), neo4j (graph database), docker (container), JPA Multi-Datasource, Mybatis Multi-Datasource, code generator', GrayLog (log collection), JustAuth (third-party login).

If you still have a demo that you want to integrate, you can also request it in issue. I will add it to the TODO list.✊

Branches

  • master: Based on the Spring Boot version 2.1.0.RELEASE, the parent of each Module depends on the pom.xml in the root directory, which is mainly used to manage the generic dependencies' version of each Module. It's easier to learn this project.
  • v-1.5.x: Based on the Spring Boot version 1.5.8.RELEASE, each module depends on spring-boot-demo-parent. There are quite a few friends who report that this way is not very friendly to rookies and it is a little difficult to run this project, so The branch (v-1.5.x) will stop development and maintenance, and all the content will be slowly synchronized to the master branch. If this branch is not completed yet in the TODO list, it will be added directly to the master branch. Everyone can still learn in this branch, but still suggest to switch to the master branch in the future. After all, the official has been upgraded to the Spring Boot version 2.x. 🙂

Environment

  • JDK 1.8 +
  • Maven 3.5 +
  • IntelliJ IDEA ULTIMATE 2018.2 + (Note: Be sure to use IDEA and ensure that the lombok plugin is installed.)
  • Mysql 5.7 + (Try to be sure to use version 5.7 or higher, because version 5.7 adds some new features and is not backward compatible. This project will try to avoid this incompatibility, but it is recommended to ensure 5.7 or higher.)

Getting Started

  1. git clone https://github.com/xkcoding/spring-boot-demo.git
  2. Open the cloned project using IDEA
  3. Open the project in IDEA
  4. Import the pom.xml file from the root of the project using the Maven Projects panel
  5. If you can not find the Maven Projects panel, you can try to check View -> Tool Buttons on the top toolbar of IDEA and the Maven Projects panel will appear on the right side of IDEA.
  6. 找到各个 Module 的 Application 类就可以运行各个 demo 了
  7. Note: Each demo has a detailed README file. Remember to check it before running the demo~
  8. Note: Before running each demo, some need to initialize the database data beforehand, don't forget it~

Plan

View the TODO file

Introduction of each Module

Module Name Module Description
spring-boot-demo-helloworld a helloworld demo.
spring-boot-demo-properties a demo to read the contents of the configuration file.
spring-boot-demo-actuator a demo to integrate spring-boot-starter-actuator for monitoring the startup and run status of Spring Boot.
spring-boot-demo-admin-client a client demo to integrate spring-boot-admin for visually monitoring the running status of the spring-boot program, it can be used with spring-boot-starter-actuator.
spring-boot-demo-admin-server a server demo to integrate spring-boot-admin for visually monitoring the running status of the spring-boot program, it can be used with spring-boot-starter-actuator.
spring-boot-demo-logback a demo to integrate the logback for logging.
spring-boot-demo-log-aop a demo to record web request logs using AOP aspect.
spring-boot-demo-exception-handler a demo to demonstrate global exception handling, including 2 types, the first one returns a json structure, and the second one jumps to the exception page.
spring-boot-demo-template-freemarker a demo to integrate Freemarker template engine.
spring-boot-demo-template-thymeleaf a demo to integrate Thymeleaf template engine.
spring-boot-demo-template-beetl a demo to integrate Beetl template engine.
spring-boot-demo-template-enjoy a demo to integrate Enjoy template engine.
spring-boot-demo-orm-jdbctemplate a demo to integrate the Jdbc Template for operating database and easily encapsulate the generic Dao layer.
spring-boot-demo-orm-jpa a demo to integrate spring-boot-starter-data-jpa for operating database.
spring-boot-demo-orm-mybatis a demo to integrate native mybatis by using mybatis-spring-boot-starter dependency.
spring-boot-demo-orm-mybatis-mapper-page a demo to integrate Mapper and PageHelper by using mapper-spring-boot-starter and pagehelper-spring-boot-starter dependencies.
spring-boot-demo-orm-mybatis-plus a demo to integrate mybatis-plus by using mybatis-plus-boot-starter dependency.
spring-boot-demo-orm-beetlsql a demo to integrate beetl-sql by using beetl-framework-starter dependency.
spring-boot-demo-upload a file upload demo, including local file upload and qiniu cloud file upload.
spring-boot-demo-cache-redis a demo to integrate redis, operate data in redis, and use redis to cache data.
spring-boot-demo-cache-ehcache a demo to integrate ehcache, and use ehcache to cache data.
spring-boot-demo-email a demo to integrate email, including sending simple text email, HTML email (including template HTML email), attachment email, and static resource email.
spring-boot-demo-task a demo to show easy to use scheduled task.
spring-boot-demo-task-quartz a demo to integrate quartz for managing scheduled tasks, including adding new scheduled tasks, deleting scheduled tasks, suspending scheduled tasks, restoring scheduled tasks, modifying scheduled task startup times, and timing task list queries, and providing front-end pages.
spring-boot-demo-task-xxl-job a demo to integrate xxl-job for distributed scheduled tasks and provide methods to bypass the management of scheduled tasks by xxl-job-admin, including scheduled task lists, trigger lists, new scheduled tasks, deleted scheduled tasks, stopped scheduled tasks, and started scheduled tasks. Modify the scheduled task and manually trigger the scheduled task.
spring-boot-demo-swagger a demo to integrate native swagger to manage and test API interfaces globally.
spring-boot-demo-swagger-beauty a demo to integrate third part of swagger dependency swagger-bootstrap-ui to beauty document style and manage and test API interfaces globally.
spring-boot-demo-rbac-security a demo to integrate spring security implement privilege management based on RBAC privilege model, supports custom filtering request, dynamic privilege authentication, uses JWT security authentication, supports online population statistics, manually kicks out users, etc.
spring-boot-demo-rbac-shiro NOT FINISHED YET!
a demo to integrate shiro for authentication management.
spring-boot-demo-session a demo to integrate Spring Session to implement Session sharing, restart program Session does not expire.
spring-boot-demo-oauth NOT FINISHED YET!
a demo to implement the oauth server and to implement oauth2 protocol such as the authorization code, access token.
spring-boot-demo-social a demo to integrate third-party login by using justauth-spring-boot-starter dependency to achieve QQ login, GitHub login, WeChat login, Google login, Microsoft login, Xiaomi login, enterprise WeChat login.
spring-boot-demo-zookeeper a demo to integrate Zookeeper and AOP to implement distributed lock.
spring-boot-demo-mq-rabbitmq a demo to integrate RabbitMQ implementation for message delivery and reception based on direct queue mode, fanout mode, topic mode, delay queue.
spring-boot-demo-mq-rocketmq NOT FINISHED YET!
a demo to integrate RocketMQ implementation for message delivery and reception.
spring-boot-demo-mq-kafka a demo to integrate Kafka implementation for message delivery and reception.
spring-boot-demo-websocket a demo to integrate websocket, the backend actively pushes the server running status to front end.
spring-boot-demo-websocket-socketio a demo to integrate websocket by using netty-socketio, implement a simple chat room.
spring-boot-demo-ureport2 NOT FINISHED YET!
a demo to integrate ureport2 to implement complex, customized Chinese-style reports.
spring-boot-demo-uflo NOT FINISHED YET!
a demo to integrate uflo(process engine like Activiti and Flowable) to quickly implement a lightweight process engine.
spring-boot-demo-urule NOT FINISHED YET!
a demo to integrate urule(rule engine like drools) fast implementation rule engine.
spring-boot-demo-activiti NOT FINISHED YET!
a demo to integrate Activiti 7 process engine.
spring-boot-demo-async asynchronous execution of tasks by using natively provided asynchronous task support.
spring-boot-demo-war packaged into a war format configuration
spring-boot-demo-elasticsearch a demo to integrate ElasticSearch by using spring-boot-starter-data-elasticsearch to implement advanced techniques for using ElasticSearch, including creating indexes, configuring mappings, deleting indexes, adding and deleting basic operations, complex queries, advanced queries, aggregate queries, etc.
spring-boot-demo-dubbo a demo to integrate Dubbo, common module spring-boot-demo-dubbo-common, service provider spring-boot-demo-dubbo-provider, service consumer spring-boot-demo-dubbo-consumer.
spring-boot-demo-mongodb a demo to integrate MongoDB and use the official starter to CRUD.
spring-boot-demo-neo4j a demo to integrate Neo4j graph database to implement a campus character relationship network.
spring-boot-demo-docker docker container.
spring-boot-demo-multi-datasource-jpa spring-boot 使用JPA集成多数据源
spring-boot-demo-multi-datasource-mybatis a demo to implement Mybatis multi-datasource by using an open source solution from Mybatis-Plus.
spring-boot-demo-sharding-jdbc a demo to use sharding-jdbc to implement sub-database and sub-tables, while ORM uses Mybatis-Plus.
spring-boot-demo-tio NOT FINISHED YET!
a demo to integrate t-io(a network programming framework like netty).
spring-boot-demo-grpc NOT FINISHED YET!
a demo to integrate Google grpc, need to be configure tls/ssl, see ISSUE#5.
spring-boot-demo-codegen a demo to integrate velocity template engine to implement code generator, improve development efficiency.
spring-boot-demo-graylog a demo to integrate graylog for unified log collection.
spring-boot-demo-sso NOT FINISHED YET!
a demo to integrate Single Sign On, see ISSUE#12.

License

MIT

Copyright (c) 2018 Yangkai.Shen

Stargazers over time

Stargazers over time

Appendix

Pom.xml in the root directory

<?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>

Official starter introduction

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 Support for RabbitMQ messages
spring-boot-starter-aop Support for aspect-oriented programming including spring-aop and AspectJ.
spring-boot-starter-batch Support for “Spring Batch” including HSQLDB database.
spring-boot-starter-cache Support for Spring’s Cache abstraction.
spring-boot-starter-data-elasticsearch Support for the Elasticsearch search and analytics engine including spring-data-elasticsearch.
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-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-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.