经过多年实战经验中积累的一套基于SpringBoot 、SpringCloud 的JavaWeb通用脚手架
核心设计思想是将web应用开发中的通用功能抽象组件化 ,从而达到轻量级 、可拓展
项目名称
描述
仓库地址
yeee-blog
轻量级博客系统
仓库
yeee-chatgpt
GPT微信小程序
仓库
yeee-crowdfunding
大学生众筹平台
仓库
yeee-activiti7
activiti7工作流
仓库
项目名称
描述
仓库地址
Yeee-JavaWeb通用脚手架升级版
JDK17 + SpringBoot3
仓库
脚手架核心通用模块memo-parent ,按功能抽取出来封装为通用的starter
├ memo - parent
├
├── memo - dependencies ---- ----------------------- Maven依赖版本统一管理
├
├── memo - base ---- ------------------------------- 基础抽象模块
├── base - config
├── base - jdbc
├── base - mybatis
├── base - mybatis - plus ---- --------------- 包含Mp基础依赖、分页插件、字段填充
└── base - tk - mapper
├── base - model ---- -------------------------- 基础模型,包含公共的VO、异常类、注解类
├── base - redis --
├── base - security - oauth2 ---- ---------------- 认证授权基础,公共配置、依赖、常亮等
├── base - swagger ---- ------------------------ 基于knife4j的swagger文档框架,只需要引入依赖添加配置即可使用
├── base - util ---- --------------------------- 工具类,如hutool、json工具、guava等
├── base - web ---- ---------------------------- 基础web模块,引入web项目必须的springboot-web-starter、校验、监控等
├
└── memo - common ---- ----------------------------- 在memo-base的基础上封装的*通用模块*
├── common - auth
├── common - app - auth - client ---- ---------- C端应用鉴权客户端
├── common - app - auth - server ---- ---------- C端应用鉴权服务端
├── common - platform - auth - client ---- ----- 管理端应用鉴权客户端
└── common - platform - auth - server ---- ----- 管理端应用鉴权客户端
├── common - dingtalk ---- --------------------- 钉钉开发接口通用功能,如聊天机器人通知等
├── common - domain
├── common - httpclient
└── common - httpclient - okhttp ---- -------- okhttp3通用封装
├── common - kit ---- -------------------------- 通用工具组件
├── common - excel - kit
└── common - redisson - kit
├── common - oss ---- -------------------------- 基于策略模式的通用oss工具组件封装,如ali、七牛云等
├── common - springcloud
├── common - springcloud - dependencies ---- - Springcloud项目公共依赖,如服务配置、服务注册、负载均衡、限流熔断等
├── common - springcloud - gray ---- --------- springcloud服务灰度发布组件
├── common - springcloud - gray - common
├── common - springcloud - gray - gateway - springcloud - gateway 灰度发布依赖
└── common - springcloud - gray - inner --- springcloud内部服务灰度发布依赖
└── common - springcloud - openfeign
├── common - sso ---- -------------------------- 单点登录
├── common - sso - inner - app
└── common - sso - third - app
├── common - web ---- -------------------------- 通用web模块,在base-web基础上加入jdbc、swagger等,较完整的web-starter
├── common - websocket ---- -------------------- websocket
├── common - websse ---- ----------------------- websse
├── common - wxsdk
├── common - wx - ma ---- -------------------- 通用微信小程序组件
└── common - wx - mp ---- -------------------- 通用微信公众号组件
├── common - workflow
├── common - activiti7 ---- -------------------- 工作流
└── common - mybatis - encrypt ---- -------------- 借鉴其他开源封装的基于mybatis的数据库字段脱敏组件
基于memo-parent脚手架的一些应用Demo ,只需引入对应的starter 即可实现功能
├
├ learn - example ---- ----------------------------- 临时学习测试
├
├ solution - problem ---- -------------------------- 解决方案
├── distribute - lock ---- --------------------- 分布式锁的不同实现方案
├── jetcache ---- ---------------------------- 分布式二级缓存
├── netty
├── sub - database - table ---- ------------------ 分表分表
├── tokenizing ---- -------------------------- 分词
├── webservice - example
└── websocket - example
├
├ middle - ware ---- ------------------------------- 中间件使用
├── canal
├── elasticsearch ---- ----------------------- 搜索
├── flink ---- ------------------------------- 大数据实时计算
├── mongodb ---- ----------------------------- 高性能、海量分布式存储
└── MQ ---- ---------------------------------- 消息队列
├
├ spring - cloud ---- ------------------------------ springcloud的一些demo
├── auth - sso ---- ---------------------------- 身份认证、资源授权
├── config ---- ------------------------------ 配置中心
├── gateway ---- ----------------------------- springcloud-gateway网关
├── protect ---- ----------------------------- 服务限流、降级熔断保护
├── register ---- ---------------------------- 注册中心
├── rpc ---- --------------------------------- RPC远程服务调用
└── transaction ---- ------------------------- 分布式事务
├
├ third - sdk ---- --------------------------------- 三方SDK
├── aliyun - sdk
├── blockchain ---- -------------------------- 区块链
├── third - pay ---- --------------------------- 基于策略模式封装统一支付DEMo,包含微信、支付宝各种支付方式的统一处理
└── weixin - sdk
快速搭建基于Netty的Websocket应用程序
下载yeee-memo工程,打包构建JavaWeb通用脚手架memo-parent
git clone https://github.com/yeeevip/yeee-memo.git
cd memo-parent && mvn clean install
pom文件引入common-netty-websocket 通用依赖
<?xml version =" 1.0" encoding =" UTF-8" ?>
<project xmlns =" http://maven.apache.org/POM/4.0.0" xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation =" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion >4.0.0</modelVersion >
<!-- yeee-memo脚手架 -->
<parent >
<artifactId >memo-parent</artifactId >
<groupId >vip.yeee.memo</groupId >
<version >3.2.2-SNAPSHOT</version >
<relativePath />
</parent >
<artifactId >api-auth-server</artifactId >
<dependencies >
<dependency >
<groupId >vip.yeee.memo</groupId >
<artifactId >common-web</artifactId >
</dependency >
<!-- [netty-websocket]通用依赖 -->
<dependency >
<groupId >vip.yeee.memo</groupId >
<artifactId >common-netty-websocket</artifactId >
</dependency >
</dependencies >
</project >
创建端点控制器类,类似Controller,就可以实现自己的业务逻辑
@ ServerEndpoint (path = "/ws/{arg}" )
public class MyWebSocket {
@ OnOpen
public void onOpen (Session session , HttpHeaders headers , @ RequestParam String req , @ RequestParam MultiValueMap reqMap , @ PathParam String arg , @ PathParam Map pathMap ) {
...
}
@ OnClose
public void onClose (Session session ) throws IOException {
...
}
@ OnError
public void onError (Session session , Throwable throwable ) {
...
}
@ OnMessage
public void onMessage (Session session , String message ) {
...
}
}
最后一个Netty-Websocket应用就搭建好了
基于memo脚手架快速搭建Spring+Security+Oauth2的认证/授权服务器
下载yeee-memo工程,打包构建JavaWeb通用脚手架memo-parent
git clone https://github.com/yeeevip/yeee-memo.git
cd memo-parent && mvn clean install
使用IDEA新建maven工程web-auth-server,pom文件引入common-platform-auth 通用依赖
<?xml version =" 1.0" encoding =" UTF-8" ?>
<project xmlns =" http://maven.apache.org/POM/4.0.0" xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation =" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion >4.0.0</modelVersion >
<!-- yeee-memo脚手架 -->
<parent >
<artifactId >memo-parent</artifactId >
<groupId >vip.yeee.memo</groupId >
<version >3.2.2-SNAPSHOT</version >
<relativePath />
</parent >
<artifactId >api-auth-server</artifactId >
<dependencies >
<dependency >
<groupId >vip.yeee.memo</groupId >
<artifactId >common-web</artifactId >
</dependency >
<!-- [授权/认证服务器]通用依赖 -->
<dependency >
<groupId >vip.yeee.memo</groupId >
<artifactId >common-platform-auth-server</artifactId >
</dependency >
<!-- [资源客户端]通用依赖 -->
<dependency >
<groupId >vip.yeee.memo</groupId >
<artifactId >common-platform-auth-client</artifactId >
</dependency >
</dependencies >
</project >
继承AbstractCustomUserDetailsService重写getSystemUserByUsername方法和自己系统用户关联起来
public class CustomUserDetailsService extends AbstractCustomUserDetailsService {
@ Override
public AuthUser getUserByUserTypeAndUsername (String username ) {
SysUser sysUser = sysUserMapper .selectOne (username );
if (sysUser == null ) {
throw new BizException (MessageConstant .USER_NOT_EXIST );
}
...
SystemUserBo userBo = new SystemUserBo ();
...
return userBo ;
}
}
在application.yml中添加以下配置
security:
oauth2:
resource:
token-info-uri: http://cloud-web-auth-server/auth-server/oauth/check_token
client:
client-id: ${spring.application.name}
client-secret: 123456
# grant-type: password
access-token-uri: http://cloud-web-auth-server/auth-server/oauth/token
yeee:
auth:
resource:
# 设置排除鉴权的URL
exclude:
- /system/register
- /system/login
- /anonymous/limit/api
最后一个web认证服务器就搭建好了
作者QQ:1324459373
招有经验尽量会全栈的技术,有意向的可以来我们接单群