快速搭建Spring Cloud项目,含Spring Gateway、Config Server、Oauth、Mongodb、MyBatis、Redis、Feigh
介绍:
本文以开源的一款封装spring cloud框架来使用,为什么要用开源框架,开源框架省去很多重复性的工作。
我发现每次在创建服务时都会进行很多重复性的配置工作,也有很多重复性的复制粘贴common库的工作,然而这些工作与业务本身并无关联,我将这些公共部分进行了封装,打造了一款非常简单实用的Spring Cloud框架,为我们省去很多配置上的工作,仅需写好配置文件,不需要重复的复制粘贴Config类。
尤其是初探Spring Cloud的同学们,在搭建Oauth2时面临的各种繁琐,在项目进度紧张的情况下往往会放弃使用Oauth2改为Spring security + jwt,这样就失去了一次深入了解认识一款强大先进的鉴权系统的机会。而开源框架则已经配置和封装好了Oauth2的基础配置、鉴权配置、验证配置。我们仅需要配置自己所要使用的权限即可,这样给我们深入认识oauth2提供了机会,让我们在使用过程中了解它。
框架Github:
开源者也是老牌开源开发者,拥有Maven公共仓库的提交权限:https://github.com/MountCloud/spring-cloud-common-parent
DEMO:
先发DEMO致敬:https://github.com/MountCloud/spring-cloud-common-demo demo中包含Gateway、Config Server、Oauth、Mongodb、MyBatis、Redis、Feigh。
Demo中包含需要的环境、测试的Postman配置、sql等完整项目。
使用:
此框架使用的SpringBoot版本是2.2.1.RELEASE,SpringCloud版本是Hoxton.RELEASE,版本是非常非常新的。但是由于Eureka 2x版本停止了维护,所以框架中所使用的服务注册为:Consul。使用也很简单,仅需要指定parent即可,再根据自己的需要,引用组件。
<parent>
<groupId>org.mountcloud</groupId>
<artifactId>spring-cloud-common-parent</artifactId>
<version>2.2.1.RELEASE-Hoxton.RELEASE-1.1</version>
</parent>
Main类添加此注解
@ComponentScan(basePackages={"you project package","org.mountcloud.springcloud"})
一:架构图
二:架构简介
由于Eureka 2x停止维护,所以此框架中服务注册使用Consul进行注册服务。
该项目是一个快速构建spring cloud的框架,并且针对spring boot的个别组件进行了扩展工作。使用的spring cloud版本:Hoxton.RELEASE,spring boot版本:2.2.1.RELEASE。
项目提供了集成Oauth的解决方案、集成feigh的解决方案、集成Mongo的解决方案、集成mybatis的解决方案、集成redis的解决方案。
三:框架组成
Github中的README文件中包含了每个组成的介绍与使用方式。
引用关系parent。
https://github.com/MountCloud/spring-cloud-common-parent
common包。
https://github.com/MountCloud/spring-project-common
标准的mvc约束管理与spring cloud mvc扩展。
https://github.com/MountCloud/spring-cloud-mvc-common
扩展OauthClient与OauthResource的基础配置,feigh融合OauthClient。
https://github.com/MountCloud/spring-cloud-common-oauth-feigh
扩展mongo组件,可以支持ID自增等操作,并且针对mongo的mvc进行了约束。
https://github.com/MountCloud/spring-cloud-common-mongo
扩展mybatis组件,怕是spring boot与spring cloud是没有mybatis的,而此组件扩展了mybatis,引用即可让springboot或者spring cloud项目拥有mybatis。并且针对mybatis的mvc进行了约束。
https://github.com/MountCloud/spring-cloud-common-mybatis
扩展redis组件,此组件包含redis和cache,将存入的redis数据默认为json并且添加key的前缀为服务名。
https://github.com/MountCloud/spring-cloud-common-redis
扩展阅读:
我将针对spring cloud各个服务单独搭建教程与技术和讲解写为单独的博客,这样在使用大家能够深入了解spring cloud的工作方式,让大家在不是使用框架的同时也可以搭建出属于自己特色的spring cloud。
推荐大家根据教程的搭建顺序进行搭建。
搭建开发环境的Consul:
https://blog.csdn.net/zhanghaishan/article/details/104063711
搭建config server:
待补充
搭建oauth server:
待补充
搭建一个普通的spring cloud服务,实现oauth client与resource
待补充
搭建Gateway
待补充
spring cloud中使用mybatis
待补充