框架中的排序说明
框架中有两个重要的执行排序概念:index(顺序位),priority(优先级):
1、index(顺序位)越小,越先执行
(如果是环绕处理,越小,也意味着越外层)。不要用最大值(Integer.MAX_VALUE),一般是框架留用的。目前框架内置的几个注解:
a)显示顺序位
常用注解 | 类型 | 性质 | 顺序位 | 备注 |
---|---|---|---|---|
@Tran | 拦截器 | 环绕处理 | 120 | |
@CachePut | 拦截器 | 环绕处理 | 110 | |
@CacheRemove | 拦截器 | 环绕处理 | 110 | |
@Cache | 拦截器 | 环绕处理 | 111 | |
@Valid | 拦截器 | 环绕处理 | 1 | 还涉及前置处理器,但无关排序 |
@DynamicDs | 拦截器 | 环绕处理 | 100 |
b)隐式顺序位
- 所有 LifecycleBean 或
@Init
函数,当有相互依赖时,会自动排序。 - 所有
@Bean
函数,当有相互依赖时,会自动排序。(v2.5.8 后支持)
2、priority(优先级)越大,越先执行
这个在 《插件扩展机制(Spi)》 提到,是用于插件执行顺序的。本来可以统一的,但想给插件一点独特性。
插件太多,不一一列出来了。用户的插件,一般用 1 就可以了。