# moon-framework
**Repository Path**: bhdweb/moon-framework
## Basic Information
- **Project Name**: moon-framework
- **Description**: moon-framework基于Spring Boot2+SpringCloud 2020.0.2打造的企业级架构脚手架。采用springboot的autoconfigure方式集成常用组件。这些组件包含接口权限验证、登录token验证、表单重复提交拦截、文件上传、缓存服务、mybatis-plus、任务调度、消息机制rabitmq相关组件。项目代码简洁,注释丰富,上手容易。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 3
- **Created**: 2022-04-18
- **Last Updated**: 2023-04-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# moon-framework
### 目的
在基于Spring boot/cloud的微服务项目中,要创建若干module,每个module或多或少都集成一些第三方依赖(如:Redis、mybatis)和一些基础工具类等等, 而这些工作往往都是重复劳动,对于初学者来说还有一定的上手门槛。
因此本项目通过一定的规则来统一编写各种依赖的starter,方便在企业内部进行规则的统一,配置的统一,用法的统一,监控的统一,部署的统一,同时分离通用框架代码和业务代码的耦合,提炼公共服务配置和工具,进一步的简化Spring Boot和Spring Cloud的使用。
## 特别说明
对于同类型的框架,github和gitee有太多优秀的项目了,但我为什么还要重复造一个呢?原因如下:
- 加深自已对这方面技术的理解
- 从业这么多年,一直也没有系统性的留下什么东西,moon这一系列的项目算是对自已从业这么多年的一个总结,为以后留个念想
- 市场上所见过的这类型框架的starter,都是将代码分散地写在各自已的starter里,个人觉得这种作法对于纯开源项目是可取的,但对于企业如果想基于这个进行二次开发就不太友好了。代码过于分散,阅读、调试时需要切换多个module,维护成本高。本项目的做法是将所有java代码都按包结构隔离封装在`moon-framework-autoconfigure`里,各自starter只做配置`spring.factories`
> 上面第三点纯属个人观点,不喜欢可以忽略
## 项目名称moon由来
moon(广寒宫),为什么取这个名字呢?因为我家的嫦娥妹妹啊!!!
## 愿景
希望本项目越来越强大,基于更多的自动化配置和抽象,能在项目开发中节约更多的时间。
## 项目结构
```
├── moon-framework 项目父级目录
├── moon-framework-autoconfigure 功能实现,所有的代码都写在这里
├── moon-framework-dependencies 依赖版本统一管理
├── moon-framework-starters 核心starter模块工程
├── moon-framework-starter-boot 核心库(安全验证、缓存、跨域、统一日志、请求统一返回体、自定义业务异常、Jackson序列化/反序列化配置、常用工具类等)
├── moon-framework-starter-mybatis-plus 基于mybatis-plus集成orm框架(数据权限过滤、基于行级(column)租户SaaS方式实现)
├── moon-framework-starter-dynamic-datasource 基于`AbstractRoutingDataSource`的动态数据源实现
├── moon-framework-starter-tenant 基于数据源(datasource)租户Saas方式实现
├── moon-framework-starter-oss 对象存储(本地文件、minio、七牛云)
├── moon-framework-starter-redis redis的封装(分布式缓存、分布锁、消息订阅发布mq)
├── moon-framework-starter-rabbitmq 基于rabbitmq的mqtt
├── moon-framework-starter-cloud Spring cloud脚手架(基于Spring Cloud Alibaba)
```
## 快速开始
### 第一步,下载本项目
[本项目地址](https://gitee.com/bhdweb/moon-framework)
`git clone https://gitee.com/bhdweb/moon-framework.git`
### 第二步,编译安装本项目
`mvn clean install` --项目会编译安装到本地maven仓库
### 第三步,在自己的工程按需添加依赖库
1. 在项目parent pom.xml中添加:
```
1.0.0-GA
UTF-8
1.8
1.8
```
2. 添加需要的starter(如moon-framework-start-boot)
```
org.moon.framework
moon-framework-starter-boot
${moon.version}
```
## Demo
具体代码可以参考
[moon-framework-samples具体的demo](https://gitee.com/bhdweb/moon-framework-samples)
## 基于moon-framework的最佳实践
> 基于moon-framework框架,提供一个springboot的单体实现和一个springcloud Alibaba的微服务实现。这两个实现共用一套前端代码moon-vue
### 包含功能
### springboot单体框架
具体代码可以查看
[moon-boot单体架构](https://gitee.com/bhdweb/moon-boot)
### springCloud Alibaba 微服务框架
具体代码可以查看
[moon-cloud微服务架构](https://gitee.com/bhdweb/moon-cloud)
### moon-vue 前端代码
具体代码可以查看
[moon-vue](https://gitee.com/bhdweb/moon-vue)