欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速搭建Spring Cloud项目,含Spring Gateway、Config Server、Oauth、Mongodb、MyBatis、Redis、Feigh

程序员文章站 2022-07-03 19:48:15
...

介绍:

  本文以开源的一款封装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"})

一:架构图

快速搭建Spring Cloud项目,含Spring Gateway、Config Server、Oauth、Mongodb、MyBatis、Redis、Feigh

 二:架构简介

  由于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

待补充