百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

推荐一款超棒的SpringCloud 脚手架项目

bigegpt 2025-07-02 18:26 4 浏览

之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用哪个

一、系统架构图

二、快速启动

1.本地启动nacos: http://127.0.0.1:8848

sh startup.sh -m standalone

2.本地启动sentinel: http://127.0.0.1:9000

nohup java -Dauth.enabled=false -Dserver.port=9000 -jar sentinel-dashboard-1.8.1.jar &

3.本地启动zipkin: http://127.0.0.1:9411/

nohup java -jar zipkin-server-2.23.2-exec.jar &

三、项目概述

  • springboot+springcloud
  • 注册中心:nacos
  • 网关:gateway
  • RPC:feign

以下是可插拔功能组件

  • 流控熔断降级:sentinel
  • 全链路跟踪:sleth+zipkin
  • 分布式事务:seata
  • 封装功能模块:全局异常处理、日志输出打印持久化、多数据源、鉴权授权模块、zk(分布式锁和订阅者模式)
  • maven:实现多环境打包、直推镜像到docker私服。

这个项目整合了springcloud体系中的各种组件。以及集成配置说明。同时将自己平时使用的功能性的封装以及工具包都最为模块整合进来。可以避免某些技术点长时间不使用后的遗忘。

另一方面现在springboot springcloud 已经springcloud-alibaba的版本迭代速度越来越快。

为了保证我们的封装和集成方式在新版本中依然正常运行,需要用该项目进行最新版本的适配实验。这样可以更快的在项目中集合工程中的功能模块。

四、项目预览

五、新建业务工程模块说明

由于springboot遵循 约定大于配置的原则。所以本工程中所有的额类都在的包路径都在com.cloud.base下。

如果新建的业务项目有规定使用指定的基础包路径则需要在启动类增加包扫描注解将com.cloud.base下的所有类加入到扫描范围下。

@ComponentScan(basePackages = "com.cloud.base")

如果可以继续使用com.cloud.base 则约定将启动类放在该路径下即可。

六、模块划分

父工程:

cloud-base - 版本依赖管理  <groupId>com.cloud</groupId>
|
|--common - 通用工具类和包  <groupId>com.cloud.common</groupId>
|   |
|   |--core-common  通用包 该包包含了SpringMVC的依赖,会与WebFlux的服务有冲突
|   |
|   |--core-exception 自定义异常和请求统一返回类
|
|--dependency - 三方功能依赖集合 无任何实现 <groupId>com.cloud.dependency</groupId>
|   |
|   |--dependency-alibaba-cloud 关于alibaba-cloud的依赖集合
|   |
|   |--dependency-mybatis-tk 关于ORM mybatis+tk.mybatis+pagehelper的依赖集合
|   |
|   |--dependency-mybatis-plus 关于ORM mybatis+mybatis—plus+pagehelper的依赖集合
|   |
|   |--dependency-seata 关于分布式事务seata的依赖集合
|   |
|   |--dependency-sentinel 关于流控组件sentinel的依赖集合
|   |
|   |--dependency-sentinel-gateway 关于网关集成流控组件sentinel的依赖集合(仅仅gateway网关使用该依赖)
|   |
|   |--dependency-sleuth-zipkin 关于链路跟踪sleuth-zipkin的依赖集合
|
|--modules - 自定义自实现的功能组件模块 <groupId>com.cloud.modules</groupId>
|   |
|   |--modules-logger 日志功能封装
|   |
|   |--modules-multi-datasource 多数据功能封装
|   |
|   |--modules-lh-security 分布式安全授权鉴权框架封装
|   |
|   |--modules-youji-task 酉鸡-分布式定时任务管理模块
|   |
|
|   
|   
| 以下是独立部署的应用 以下服务启动后配合前端工程使用 (cloud-base-angular-admin)
|
|--cloud-gateway  应用网关
|
|--authorize-center 集成了modules-lh-security 的授权中心,提供统一授权和鉴权
|   
|--code-generator 代码生成工具
|
|--user-center 用户中心 提供用户管理和权限管理的相关服务
|
|--youji-manage-server 集成了modules-youji-task 的定时任务管理服务端

七、版本使用说明

<springboot.version>2.4.2</springboot.version>
<springcloud.version>2020.0.3</springcloud.version>
<springcloud-alibaba.version>2021.1</springcloud-alibaba.version>

八、多环境打包说明

在需要独立打包的模块resources资源目录下增加不同环境的配置文件

application-dev.yml
application-test.yml
application-prod.yml

修改application.yml

spring:
  profiles:
    active: @profileActive@

在需要独立打包的模块下的pom文件中添加一下打包配置。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${springboot.version}</version>
            <configuration>
                <fork>true</fork>
                <addResources>true</addResources>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <delimiters>
                    <delimiter>@</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <profileActive>dev</profileActive>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <profileActive>test</profileActive>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <profileActive>prod</profileActive>
        </properties>
    </profile>
</profiles>

mvn打包命令

# 打开发环境
mvn clean package -P dev -Dmaven.test.skip=ture
# 打测试环境
mvn clean package -P test -Dmaven.test.skip=ture
# 打生产环境
mvn clean package -P prod -Dmaven.test.skip=ture

九、构建Docker镜像

整合dockerfile插件,可直接将jar包构建为docker image 并推送到远程仓库

增加插件依赖

<!-- docker image build -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.10</version>
    <executions>
        <execution>
            <id>default</id>
            <goals>
                <!--如果package时不想用docker打包,就注释掉这个goal-->
                <!--                        <goal>build</goal>-->
                <goal>push</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <repository>49.232.166.94:8099/example/${project.artifactId}</repository>
        <tag>${profileActive}-${project.version}</tag>
        <username>admin</username>
        <password>Harbor12345</password>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

在pom.xml同级目录下增加Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/lh0811/lh0811-docer:lh-jdk1.8-0.0.1
MAINTAINER lh0811
ADD  ./target/${JAR_FILE} /opt/app.jar
RUN chmod +x /opt/app.jar
CMD java -jar /opt/app.jar

十、源码获取

链接这里放不了,需要的同学转发本文+关注+私信【522】即可领取我整理好的源码和开发笔记


相关推荐

如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)

1.搭建项目环境打开Eclipse选择FileàNewàMavenProject创建Maven工程,选择“Createasimpleproject”选项,点击【Next】按钮,会进入“New...

DataX写插件开发-集成阿里云RocketMQ

在上一期我们对datax进行了技术调研DataX数据异构、数据同步神器,这一次我们集成一个RocketMQ写插件,能够非常方便对将mysql数据同步到MQ中,下面来总结下具体步骤。1.下载datax源...

以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享

项目说明源码获取方式:关注转发之后私信回复【源码】即可免费获取到以SpringMVC+Shiro+Mybatis为核心开发的精简后台基础系统。包含用户管理,角色管理,部门管理,权限管理,菜单管理,日志...

手把手教小伙伴们使用 Nginx 部署 TienChin 项目!

今天我就来手把手教小伙伴们部署TienChin项目,一起把这个项目跑起来,看看到底是个什么样的项目。小伙伴们知道,对于这种前后端分离的项目,我们在实际部署的时候,可以按照前后端分离的方式来部署,也...

推荐一款超棒的SpringCloud 脚手架项目

之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用...

SpringCloud 微服务迁移到 Kubernetes 容器化完整流程

k8s容器部署流程具体步骤:第一步:熟悉SpringCloud微服务项目第二步:源代码编译构建第三步:构建项目镜像并推送到镜像仓库第四步:K8s服务编排第五步:部署服务所需的基础环境第六步:部署微服...

SpringBoot 实现动态配置及项目打包部署上线

一、动态配置文件我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。1.1、概述在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照...

3.5 源码安装ONOS1.3.0(源码包怎么安装)

ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。近日笔者在学习ONOS的过程中写下了这篇文章,希望可以对刚接触ONOS的同学们...

jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)

目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...

CI&amp;CD落地实践6-Jenkins接入maven构建后端springboot项目

前言在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建mave...

从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

阅读目录:一、前言二、发布流程三、环境准备四、部署思路梳理五、三台机器上操作六、Git机器上操作七、Docker机器上操作八、Jenkins机器上操作九、上传JAVA项目代码到Git仓库十、Jenki...

微服务架构实战:使用Jenkins实现自动化构建

使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微...

Jenkins 自动化部署实例讲解(jenkins自动化部署git 项目)

前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。这种情况下,我一般会劝你了解一下Jenkins这个玩意...

多模块的微服务项目容器化与Git追踪发布记录

在使用了微服务后,一个项目往往由多个模块组成,而容器化发布的建议是单个容器尽量只运行单个进程。所以我们会把每个模块单独打包成镜像运行。如果每个模块都单独配置Dockerfile会让我们维护起来很麻烦。...

手把手教你使用 Jenkins+Docker 实现持续集成

作者:乐之终曲来源:https://blog.csdn.net/qq_37143673/对于Jenkins我只能用两个字形容,难用。就不过多吐槽了,本篇是基于docker环境的使用。1.安...