Skip to content

SpringBootLearning,SpringCloudStudy,学习SpringBoot2/SpringCloud2的项目,包含Eureka/Zuul/JPA/Mybatis Plus/Feign/WebSocket/JMS/POI-TL/Redis Cache/UDP/SecurityJWT/elasticSearch/Drools

Notifications You must be signed in to change notification settings

tamperMonkeyZQ/spring-cloud-study

This branch is 8 commits behind moshowgame/spring-cloud-study:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d940725 · Oct 24, 2020

History

63 Commits
Jan 4, 2019
Oct 24, 2020
Oct 24, 2020
Aug 2, 2019
Oct 24, 2020
Jul 22, 2019
Aug 11, 2019
Oct 24, 2020
Oct 24, 2020
Oct 24, 2020
Oct 24, 2020
Aug 10, 2019
Oct 24, 2020
Oct 24, 2020
Aug 15, 2018
Oct 24, 2020
Jul 23, 2019
Jul 16, 2019
Jul 16, 2019
Oct 24, 2020
Jan 15, 2020
Jan 5, 2020
Oct 24, 2020
Jul 16, 2019
May 31, 2018
Aug 2, 2019
Aug 11, 2019
Oct 24, 2020
Oct 24, 2020

Repository files navigation

image image Build Status

SpringBootLearning && SpringCloudLearning

SpringBoot+微服务学习项目。请根据需要开启依赖。感谢大家的关注、支持和反馈。
http://zhengkai.blog.csdn.net

工程名 描述 端口
spring-cloud-study-eureka 服务发现与注册中心 8888
spring-cloud-study-zuul 动态转发路由器 7777
spring-cloud-study-demo DEMO项目(含websocket,json,不含jpa) 9999
spring-cloud-study-configcenter 配置中心 5555
spring-cloud-study-jpa JPA(hibernate实现) 4444
spring-cloud-study-feign 微服务远程调用 6666
spring-cloud-study-redis 热点数据缓存 2222
spring-cloud-study-jms JMS(Java消息服务,ActiveMQ实现) 1111
spring-cloud-study-mybatisplus mybatisplus(mybatis的加强版) 3333
spring-cloud-study-poi poi导入 8899
spring-cloud-study-aop aop切面编程 9998
spring-cloud-study-udp netty实现udp 9898
spring-cloud-study-netty-websocket netty实现websocket 6688
spring-cloud-study-security spring-security-demo自定义授权 9999
spring-cloud-study-security-jwt spring-security-JWT授权 9999
spring-cloud-study-elasticsearch spring-data-elasticsearch,强大的搜索和分析引擎 9999
spring-cloud-study-drools drools(jboss rules)强大的业务规则引擎 9999
spring-cloud-study-logstash springboot2+logback+logstash+elasticsearch+kibana打造强大的日志收集分析系统 9999
spring-cloud-study-websocket springboot2+websocket,整合基于IM的优化版本 9999
spring-cloud-study-ehcache springboot2+ehcache,纯java进程缓存框架 9999

一、运行环境


- 版本:SpringCloud/SpringBoot 2.X
- 环境:JDK8/11
- 编码:UTF-8
- IDE:Spring Tool Suit(STS)/IDEA(推荐)/VSCode with STS(New)
 <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>

二、有关项目启动和配置的说明

  • 由于子项目太多,暂时移除所有模块的引用,请自己根据需要请到父项目的pom.xml启用对应module
  • 大部分模块均为springboot 可独立启动模块,可不依赖eureka注册中心等springcloud组件。
  • 如果学习微服务,请请先启动spring-cloud-study-eureka基础模块,因为它是注册中心,大多数微服务必须依赖于它才能实现必要的功能。
  • zuul路由中心(后续会升级为ApiGateway),启用spring-cloud-study-zuul,并配置yml文件即可(已经带了一点小配置,可根据实际情况修改)。
  • 按需启用spring-cloud-study-demo/spring-cloud-study-configcenter/spring-cloud-study-jpa/spring-cloud-study-feign等等
  • 其他模块均不需要eureka等模块,可直接启动

三、使用说明

Eureka

微服务注册中心,SpringCloud全家桶,Netflix版注册中心。这个优先启动,是一切微服务的基础也可以修改配置,进行集群,这里默认单机单例


http://127.0.0.1:8888/eureka 注册中心

Zuul(@Deprecated,应该用ApiGateway了)

API网关/路由,ZUUL是阻塞的,APIGateway是NIO的。
分发方式一,分发搭配/api1,修改yml就可以了,推荐用指定serviceId的
分发方式二,分发路由,直接根据serviceId访问,无需配置
转发的ServiceId是根据项目配置的spring:application:name: spring-cloud-study-demo 来的

http://127.0.0.1:7777/spring-cloud-study-demo/demo/index 自动分发请求
http://127.0.0.1:7777/api2/demo/index 路由转发请求到配置文件配置的/api2上
http://127.0.0.1:7777/api1/demo/socket/222 路由转发请求到配置文件配置的/api1上

DEMO

正常的访问请求而已,返回json什么的 还支持WebSocket,对WebSocket不懂的可以看我这个文章https://blog.csdn.net/moshowgame/article/details/80275084

http://127.0.0.1:9999/demo/socket/222 websocket请求页面
http://127.0.0.1:9999/demo/index json数据返回
http://127.0.0.1:9999/demosocket/222 socket请求地址
http://127.0.0.1:9999/basepath获取微服务路径

Configcenter

配置中心,用于读取公共配置文件

http://127.0.0.1:5555/getparam获取变量
http://127.0.0.1:5555/application/dev获取application-dev.yml的变量

JPA

JPA是一个标准,Hibernate是实现,实现简单、强大的CRUD功能。已经脱离eureka,需要加入的话自己去掉pom和启动器的eureka相关注释即可。另外,只要数据库连接正常,启动项目可以自动建表,使用init方法可以自动初始化数据,无需自己动数据库

http://127.0.0.1:4444/jpa/user/init/8899初始化8899的用户
http://127.0.0.1:4444/jpa/user/roles/8899获取8899用户的角色

Feign

Feign用于远程调用微服务,这里用来调用demo的内容,请先启动eureka+demo再启动这个
具体配置可以看我的文章https://blog.csdn.net/moshowgame/article/details/80616624

http://127.0.0.1:9999/demo/getData/222?data=hahahha
http://127.0.0.1:6666/feign/remote/demo/getData/222?data=springcloudstudy远程调用demo
http://127.0.0.1:7777/spring-cloud-study-feign/feign/remote/demo/getData/222?data=springcloudstudybyzuul理由转发+远程调用demo

Redis/SpringCache

Redis 是一个高性能的key-value数据库,广泛应用于互联网业务的缓存,如token池,商品缓存等等热点数据的缓存。
详情请看https://blog.csdn.net/moshowgame/article/details/80792774

【放入缓存】 http://127.0.0.1:2222/redis/item/2{"itemId":2,"itemName":"德玛西亚2"}
【放入缓存】 http://127.0.0.1:2222/redis/item/3{"itemId":3,"itemName":"德玛西亚3"}
【读取缓存(可以去RedisDesktopManager看一下,已经有数据了)】 http://127.0.0.1:2222/redis/item/2{"itemId":2,"itemName":"德玛西亚2"}
【读取缓存(可以去RedisDesktopManager看一下,已经有数据了)】 http://127.0.0.1:2222/redis/item/3{"itemId":3,"itemName":"德玛西亚3"}
【放入list缓存】 http://127.0.0.1:2222/redis/item/all[{"itemId":666,"itemName":"德玛西亚666"},{"itemId":999,"itemName":"德玛西亚999"}]
【读取list缓存(这是一个空方法,只是因为有了缓存才有数据)】 http://127.0.0.1:2222/redis/item/all2[{"itemId":666,"itemName":"德玛西亚666"},{"itemId":999,"itemName":"德玛西亚999"}]
【更新缓存】 http://127.0.0.1:2222/redis/item/2/update{"itemId":2,"itemName":"德玛西亚XXX2"}
【重新读取缓存】 http://127.0.0.1:2222/redis/item/2{"itemId":2,"itemName":"德玛西亚XXX2"}
【EL表达式指定KEY】 http://127.0.0.1:2222/redis/item/object?itemId=4&itemName=XXXX 返回结果 {"itemId":4,"itemName":"XXXX"}
【获取缓存(结果不变还是XXXX不是4444)】 http://127.0.0.1:2222/redis/item/object?itemId=4&itemName=4444 返回结果 {"itemId":4,"itemName":"XXXX"}

JMS/ActiveMQ

详情请看https://blog.csdn.net/moshowgame/article/details/80836621

发送消息 http://127.0.0.1:1111/jms/email/send控制台显示Received

Mybatis-Plus 3

Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件, 减少你的开发周期优化动态维护 XML 实体字段,无入侵全方位 ORM 辅助层让您拥有更多时间陪家人。
详情请看https://blog.csdn.net/moshowgame/article/details/81008485

http://127.0.0.1:3333/mybatisplus/user/init数据初始化
http://127.0.0.1:3333/mybatisplus/user/find通过QueryWarrap构造器查询

POI-TL/Word Model

很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等。 用Java操作word文档,毫无疑问,当下最流行apache poi,对于poi如何操作word文档,这里不作过多介绍。 这里主要讲解如何通过一个制作好的word模板文件,通过数据填充,生成加工好的word文件。 详情请看https://blog.csdn.net/moshowgame/article/details/81702029

http://127.0.0.1:8899/poi/generateWord通过Word模板生成Word文件

Spring AOP

Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题。AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。比如我们最常见的就是日志记录了,不可能每个业务都去加写日志发的功能吧,我们就用切面,将需要记录日志的地方切一下,配置自动记录日志即可。 详情请看https://blog.csdn.net/moshowgame/article/details/85814808

http://127.0.0.1:9998/aop/index查看控制台AOP情况

Netty-UDP

UDP是用户数据报协议(User Datagrame Protocol,UDP)的简称,主要作用是将网络数据流压缩成数据报的形式,提供面向事务的简单信息传送服务。
具体可以看我的文章https://blog.csdn.net/moshowgame/article/details/88420880

服务端运行方法运行ChineseProverbServer的main方法
客户端运行方法运行ChineseProverbClient的main方法

Netty-WebSocket

基于Netty的Websocket,稳定性性能秒杀原生。
详情请看https://blog.csdn.net/moshowgame/article/details/91552993

http://127.0.0.1:6688/netty-websocket/index运行多个查看结果

Spring-Security-Filter

基于spring-security的自定义登录模块。

http://127.0.0.1:9999/security/index首页
http://127.0.0.1:9999/security/login登录页面
http://127.0.0.1:9999/security/user/list需要授予USER权限访问的页面

Spring-Security-JWT

基于spring-security-jwt授权模块。详情请看https://blog.csdn.net/moshowgame/article/details/96476554

http://127.0.0.1:9999/security/auth登录接口,json body是{"username":"users","password":"pass"}
http://127.0.0.1:9999/security/token获取Token信息,Header是Authorization:Bearer +Token

Spring-Data-ElasticSearch

基于spring-boot-starter-data-elasticsearch的搜索和分析引擎模块。详情请看https://blog.csdn.net/moshowgame/article/details/96768494

http://127.0.0.1:9999/es/save新增记录
http://127.0.0.1:9999/es/search搜索记录

Springboot2+Drools

Drools是一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,特点就是速度快、效率高。 如果你还在使用复杂的JAVA代码校验复杂的优惠券/超市打折/计价规则/商品定价/阶梯定价/游戏规则/业务规则?试试用Drools来解救代码吧,适用但不仅仅包含以上场景。详情请看https://blog.csdn.net/moshowgame/article/details/98061651

http://127.0.0.1:9999/drools/taxi/cal?distanceInMile=18打车18公里
http://127.0.0.1:9999/drools/taxi/cal?distanceInMile=2打车2公里
http://127.0.0.1:9999/drools/taxi/cal?distanceInMile=3.5打车3.5公里

SpringBoot2+Logback+Logstash+ElasticSearch+Kibana

Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。详情请看https://blog.csdn.net/moshowgame/article/details/98851656

http://127.0.0.1:9200ElasticSearch查看运行情况
http://127.0.0.1:9999/logstash输出Log日志
http://127.0.0.1:5601/app/kibanakibana查看日志

Websocket IM

基于SpringBoot2+WebSocket,整合了简单IM的优化版,简单明了入门无压力,集群部分未实现(即发送的userId不在当前服务器)

http://127.0.0.1:9999/demo/page打开第一个页面,userId=10/toUserId=20
http://127.0.0.1:9999/demo/page打开第二个页面,userId=20/toUserId=10
http://127.0.0.1:9999/demo/push/10?message=moshowCallU给对应的用户推送信息

EhCache

Ehcache是一个基于标准的开源缓存,可提高性能,减轻数据库负载并简化可伸缩性。 它是最广泛使用的基于Java的缓存,因为它健壮,可靠,功能齐全并与其他流行的库和框架集成。
详情请看https://zhengkai.blog.csdn.net/article/details/109251757

http://localhost:9999/ehcache/cert/find?certId=1&certNumber=111111查询并建立缓存
http://localhost:9999/ehcache/cert/find?certId=1查询缓存
http://localhost:9999/ehcache/cert/save?certId=1&certNumber=111111清除缓存
http://localhost:9999/ehcache/cert/find?certId=1&certNumber=2222重新查询并建立缓存
http://localhost:9999/ehcache/cert/find?certId=1再次查询缓存

四、版本更新

更新时间 更新内容
20201024(程序员节快乐!) - 优化部分依赖版本
- 新增ehcache模块,强大的java缓存框架,提供方便快捷的缓存功能
20200105 - 新增SpringBoot2+WebSocket的简单IM优化版,优化连接技术相关内容,目前是单机版,集群版本近期发布。
20190810 - 新增SpringBoot2+Logback+Logstash+ElasticSearch+Kibana打造强大的日志收集分析系统。
20190802 - 新增Spring-Drools业务规则引擎模块。
- 由于子项目太多,暂时移除所有模块的引用,有需要请再父项目的module中启用
- empty为空白项目,可以直接copy出来改一下当新模块使用
新增Travis CI
20190722 - 新增Spring-Data-ElasticSearch授权验证模块。
20190720 - 新增SpringSecurity-JWT授权验证模块。
20190716 - 新增SpringSecurity自定义登录模块。
20190612 - 新增基于Netty的WebSocket模块。
20190122 - 新增基于Netty的UDP模块。
20190105 - 新增AOP模块,可以练习AOP功能。
- 更新SpringBoot到2.0.5版本。
- 更新lombok,修复某些JDK不兼容问题
20181112 - 优化mybatis-plus模块的导入,使用mybatis-plus stater简化操作
20180815 - 新增POI-TL模块,POI根据Word模板输出文件
20180711 - 新增MybatisPlus3.0模块,比Mybatis更简单爆炸
20180627 - 新增JMS模块,ActiveMQ实现,订阅/消费
20180624 - 新增Redis模块,完美集成SpringCache
20180609 - 新增Feign模块,MicroService之间相互调用
- 优化说明
20180603 - 新增JPA模块,Hibernate实现,基于实体,简单CRUD
- 优化调整
20180602 - 优化调整
- 新增configcenter模块,集中式配置管理

About

SpringBootLearning,SpringCloudStudy,学习SpringBoot2/SpringCloud2的项目,包含Eureka/Zuul/JPA/Mybatis Plus/Feign/WebSocket/JMS/POI-TL/Redis Cache/UDP/SecurityJWT/elasticSearch/Drools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 95.9%
  • HTML 4.1%