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

createh52个月前 (02-01)技术教程10

之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新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 - 版本依赖管理  com.cloud
|
|--common - 通用工具类和包  com.cloud.common
|   |
|   |--core-common  通用包 该包包含了SpringMVC的依赖,会与WebFlux的服务有冲突
|   |
|   |--core-exception 自定义异常和请求统一返回类
|
|--dependency - 三方功能依赖集合 无任何实现 com.cloud.dependency
|   |
|   |--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 - 自定义自实现的功能组件模块 com.cloud.modules
|   |
|   |--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 的定时任务管理服务端

七、版本使用说明

2.4.2
2020.0.3
2021.1

八、多环境打包说明

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

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

修改application.yml

spring:
  profiles:
    active: @profileActive@

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


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            ${springboot.version}
            
                true
                true
            
            
                
                    
                        repackage
                    
                
            
        
        
            org.apache.maven.plugins
            maven-resources-plugin
            
                
                    @
                
                false
            
        
    
    
        
            src/main/resources
            true
        
    



    
        dev
        
            true
        
        
            dev
        
    
    
        test
        
            test
        
    
    
        prod
        
            prod
        
    

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 并推送到远程仓库

增加插件依赖



    com.spotify
    dockerfile-maven-plugin
    1.4.10
    
        
            default
            
                
                
                push
            
        
    
    
        49.232.166.94:8099/example/${project.artifactId}
        ${profileActive}-${project.version}
        admin
        Harbor12345
        
            target/${project.build.finalName}.jar
        
    

在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】即可领取我整理好的源码和开发笔记


相关文章

腾讯T4专家用1200个实例讲明白了Java Web项目实战,学完月入30K

内容简介《Java Web开发实战1200例》包括第一卷、第二卷共计1200个例子,每卷各计600个例子。本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java Web进行...

花30天整理了11个超棒的Java开源项目,雀氏牛逼

之前有粉丝让我推荐一些好的开源项目,所以上个月我几乎每天都会分享一个不错的项目,为了方便大家阅读,我今天把上个月发的项目都整理一下(真的不是为了水文啊!!)这不是快秋招了嘛,所以这个月准备发一发面试文...

解放双手!接私活必备的Java开源项目

开源最前线(ID:OpenSourceTop) 猿妹整编项目地址:https://github.com/zhangdaiscott/jeecg-boot今天,猿妹要和大家分享一个 Java 项目快速开...

值得你关注的16个顶级 Java 开源项目!小白必看

1.JavaGuide把这个排第一没有个人因素影响哈!Guide 哥我自己大三开始维护的,目前算是纯 Java 类型项目中 Star 数量最多的项目了。但是,本仓库的价值远远(+N次 )比不上像 Sp...

大公司为何禁止项目使用Tomcat?看看它们选择的Web容器有哪些!

随着SpringBoot的广泛应用,越来越多的公司将其作为主要的Java开发框架。在使用SpringBoot时,Tomcat是最常用的Web容器之一,但在某些大公司中,SpringBoot项目被禁止使...