1
THESDZ 2020-10-26 14:43:24 +08:00
可以外部指定顺序吧?
|
3
soulzz 2020-10-26 15:03:36 +08:00
外部配置顺序基本没有问题,毕竟类名不常改
但是一旦改了,ide 又追踪不到就容易出问题 |
4
soulzz 2020-10-26 15:08:22 +08:00
正常的情况来说还是老老实实的写个 ChannelInitializer
楼主这套责任链模式的流程处理写完了的话记得回我一下,我也想知道怎么优雅的解决比较好 |
5
yuan434356430 OP 我肯定要使用外部方式排序了,业务需要,存到 Mysql 然后刷到 Redis 缓存,每次都读缓存初始化链
|
6
skypyb 2020-10-26 15:19:02 +08:00
没太看明白, 排序完之后还能动态修改吗? 仅限排序的话实现 InitializingBean, 在 afterPropertiesSet()里边排序就行了
要能在外部操作动态排序的话, 那责任链上下文肯定得对外暴露调整顺序的 API 才行= = |
7
tamer 2020-10-26 15:19:57 +08:00
有段时间没写这些了, 自定义注解定义 enable,order 放到优先级队列处理?
|
8
haosamax 2020-10-26 15:31:19 +08:00
private static void sortPostProcessors(List<?> postProcessors, ConfigurableListableBeanFactory beanFactory) {
// Nothing to sort? if (postProcessors.size() <= 1) { return; } Comparator<Object> comparatorToUse = null; if (beanFactory instanceof DefaultListableBeanFactory) { comparatorToUse = ((DefaultListableBeanFactory) beanFactory).getDependencyComparator(); } if (comparatorToUse == null) { comparatorToUse = OrderComparator.INSTANCE; } postProcessors.sort(comparatorToUse); } |
10
Cbdy 2020-10-26 16:16:46 +08:00 via Android
org.springframework.core.annotation.AnnotationAwareOrderComparator
|
11
Bromine0x23 2020-10-26 17:19:29 +08:00
用 ObjectProvider 获取所有 bean,再进行排序比较好?
|
12
mingmingtiexue 2020-10-26 17:37:27 +08:00
不知道我有没有理解 你的意思。
使用 zk, 节点是 需要的 bean 的名字逗号分割,赋给一个变量。 同时解决了是否用和顺序问题,包含名字就是用, 排序就是 handler 执行顺序。 不过需要引入 zk 。 |