名字源于未来要融合的”银河织女系“,代表当前Spring生态的全家桶体系,这个项目以Spring生态为基础,从实际业务上整理出来的快速开发模块集合,让SpringBoot开发可以更快。
该项目并非Demo或者框架模板工程,而是源码级提升的SpringBoot Plus,每个功能模块需要使用相应注解启用才会加载,模块多而不重,可选择性启用。
- 能用YML配置元信息完成的,绝不会用代码配置。
- 能用注解元编程完成的,绝不会用API代码。
- 能用面向声明式编程的,绝不会用面向过程或面向对象编程。
- Pulsar(脉冲星): 用于长轮询、耗时请求fast-timeout等。0.1.0+
- 依赖技术:Spring MVC
- 设计模式:适配器模式、代理模式
- Comet(彗星): 用于统一的请求切面日志记录(包括Controller层、Service层(1.12.0+))。0.2.0+
- 依赖技术:Spring MVC
- 设计模式:策略模式、装饰模式
- Pillar(创生柱): 用于if/else业务块拆分。0.2.0+
- 可选依赖技术:Spring IoC
- 设计模式:策略模式、适配器模式
- Particle(粒子): 用于幂等/去重、次数限制,及可扩展限制器责任链。1.5.0+
- 依赖技术:Spring MVC、SpringBoot Data Redis
- 设计模式:策略模式、责任链模式、组合模式
- Light (光): 用于快速缓存,支持超级缓存(ThreadLocal)、一级缓存(内存缓存池)、二级缓存(Redis)。 1.8.0+
- 依赖技术:SpringBoot Data Redis
- 设计模式:策略模式、模板方法模式、门面模式
- Fusion(核聚变):用于动态切面修改方法返回值(主要针对于定制前端响应数据格式)、根据条件启用/禁用组件方法的执行、根据条件调用可替换的反馈方法。1.12.0+
- 依赖技术:Spring AOP
- 设计模式:策略模式
- Echo(回响):用于第三方请求,支持签名/验签、数据加密、可定制统一响应类型和成功校验。1.13.0+
- 依赖技术:Spring MVC
- 设计模式:模板方法模式、适配器模式、工厂方法模式
- Crust(外壳):用于Session、JWT Token认证,支持验证、刷新Token,可选配置对称与RSA非对称生成Token,BCrypt或自定义salt表字段加密的方式。1.14.0+
- 依赖技术:Spring Security
- 设计模式:模板方法模式、适配器模式
- Ice(冰):用于延迟列队的需求,支持配置延迟分桶、任务执行超时时间(TTR)、超时重试、Task自动调度等。1.15.0+
- 依赖技术:Spring IoC、Spring Task、SpringBoot Data Redis
- 设计模式:策略模式、享元模式、门面模式、面向声明式编程
- Neutron(中子星):用于定时作业任务,支持数据库持久化,动态创建Job、删除、修改Cron执行表达式。1.18.0+
- 依赖技术:Spring IoC、Quartz
- 设计模式:门面模式
- Moon(月球):用于在多个类型值之间轮询,支持并发操作,支持泛型数据值,不同的环业务相互隔离。2.2.0+
- 依赖技术:Spring IoC、SpringBoot Data Redis
- 设计数据结构:环形链表
- 设计模式:策略模式、门面模式
- Halo(光晕):用于监听Mybatis的CRUD操作并执行相应的业务,支持前置、后置类型。2.5.0+
- 依赖技术:Mybatis
- 设计模式:面向声明式编程
- Hydrogen(氢):用于开箱即用的切面事务、统一异常响应处理(支持自定义异常)、参数校验、国际化、动态添加拦截器与过滤器(支持属性注入,可线上装载)。3.0.0+
- 依赖技术:Spring MVC
- 设计模式:装饰模式、模板方法模式、工厂方法模式、适配器模式、桥接模式、观察者模式
- Atom(原子):分布式锁,支持流行的Redis、Zookeeper方案,统一的API与注解使用方式。3.3.0+
- 依赖技术:Redission、Curator-Recipes
- 设计模式:策略模式、构建者模式
- Wormhole(虫洞):基于DDD架构模块设计的Event Bus,可用于事件流转、大数据业务事件生产与输出。3.3.0+
- 依赖技术:Spring IoC
- 设计模式:观察者模式、面向声明式编程
- Sundial(日晷):用于实现一主多从的多数据源切换,如:读写分离。3.4.0+
- 依赖技术:Spring JDBC
- 设计模式:策略模式、动态代理模式
- Jupiter(木星):基于数据源查询的轻量级规则引擎,查询过滤支持请求域(如:
$params
、$attr
、$header
)获取表达式,结果匹配支持EL、OGNL表达式解析。3.5.0+- 依赖技术:Spring JDBC、Spring EL、OGNL
- 设计模式:策略模式、享元模式、模板方法模式
- Metal(金属):用于实现分布式动态配置刷新。3.6.0+
- 依赖技术:Spring IoC、SpringBoot Data Redis
- 设计模式:观察者模式、门面模式
- Java 8
- Lombok 1.18.x
- SpringBoot 2.x
- 1.16.0+ for Spring Boot 2.1.x - 2.2.x
- Dalston.1.11.0-Dalston.1.12.0 for Spring Boot 1.5.x
- Others for Spring Boot 2.0.x
<dependency>
<groupId>com.github.yizzuide</groupId>
<artifactId>milkomeda-spring-boot-starter</artifactId>
<version>${milkomeda-last-version}</version>
</dependency>
Milkomeda 3.0 is now available(April 2020).
- Yml配置提升为开发的一等公民,使开发者可以快速接入模块。
- 新增
Hydrogen
模块,对Spring、SpringMVC的基础建设功能全部包揽,从源码级发掘实用功能。 - 功能模块聚合能力加强,做到大世界内有小世界的改进。
- [Comet] 模块包由
com.github.yizzuide.milkomeda.comet
迁移到com.github.yizzuide.milkomeda.comet.core
,因为该模块聚合了Collector
和Logger
。 - [Pulsar] 删除了
timeoutCallback
和errorCallback
回调设置,替换为Hydrogen
的Uniform
统一处理异常响应配置方式。
Mikomeda还需要更多的业务型实用模块,欢迎有想法的开发者加入进来!可以通过以下原则来Pull Request:
- 从
master
分支拉取新分支,新添加的功能模块分支以feat_模块名_yyyyMMdd
形式命名,问题修复则以fix__yyyyMMdd
模块名形式命名。 - 添加的模块尽可能地通用,不能含有业务代码,最好可以提供使用的Demo并添加到
MilkomedaDemo
工程里,如果有好的想法需要讨论可以提一个以[feature]开头的issue进行讨论。 - 新添加的代码尽可能地规范,代码必需经过格式化,类的命名需要添加模块名前缀,新添加的模块需要添加到
Milkomeda
的com.github.yizzuide.milkomeda
包下,属性和方法需要添加注释表明如何使用。 - 建议遵行提交注释以
feat|fix|docs|style|refactor|perf|test|workflow|ci|chore|types:
为前缀。 - 提交时不要提交IDE的配置相关文件和临时生成的文件,请注意排除。
关于如何开发Mikomeda项目:使用IDEA新建空的工程,再把工程模块
Mikomeda
和MikomedaDemo
导入即可。
yizzuide, fu837014586@163.com
Milkomeda is available under the MIT license. See the LICENSE file for more info.
![IntelliJ IDEA](https://raw.githubusercontent.com/Loeng/Milkomeda/master/./logo/idea.png)