跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教下 Spring 大佬,如何做指定类型 Bean 的排序和筛选
未分類
19 10 月 2020

请教下 Spring 大佬,如何做指定类型 Bean 的排序和筛选

请教下 Spring 大佬,如何做指定类型 Bean 的排序和筛选

資深大佬 : yuan434356430 6

我做了一套责任链模式的流程处理,希望可以自由的控制子类的 Handler 的顺序和是否使用,已经实现是否使用的部分,但顺序仍未实现,且目前的实现方式不够优雅。 我想目前的思路是通过数据库配置 Handler 子类,再判断是否使用,顺序通过 Bean 的命名进行排序 想通过类似 @Order(21)这种方式实现 Bean 的排序。感谢~ 核心代码如下: 请教下 Spring 大佬,如何做指定类型 Bean 的排序和筛选

大佬有話說 (12)

  • 資深大佬 : THESDZ

    可以外部指定顺序吧?

  • 資深大佬 : THESDZ

    @THESDZ 我的意思是,不要局限于 bean 初始化的顺序,可以通过配置文件等外部方式,重新排序

  • 資深大佬 : soulzz

    外部配置顺序基本没有问题,毕竟类名不常改
    但是一旦改了,ide 又追踪不到就容易出问题

  • 資深大佬 : soulzz

    正常的情况来说还是老老实实的写个 ChannelInitializer
    主这套责任链模式的流程处理写完了的话记得回我一下,我也想知道怎么优雅的解决比较好

  • 主 資深大佬 : yuan434356430

    我肯定要使用外部方式排序了,业务需要,存到 Mysql 然后刷到 Redis 缓存,每次都读缓存初始化链

  • 資深大佬 : skypyb

    没太看明白, 排序完之后还能动态修改吗? 仅限排序的话实现 InitializingBean, 在 afterPropertiesSet()里边排序就行了
    要能在外部操作动态排序的话, 那责任链上下文肯定得对外暴露调整顺序的 API 才行= =

  • 資深大佬 : tamer

    有段时间没写这些了, 自定义注解定义 enable,order 放到优先级队列处理?

  • 資深大佬 : haosamax

    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);
    }

  • 資深大佬 : THESDZ

    @soulzz #3 不见得非是类名,基本名称也可以重新命名.

  • 資深大佬 : Cbdy

    org.springframework.core.annotation.AnnotationAwareOrderComparator

  • 資深大佬 : Bromine0x23

    用 ObjectProvider 获取所有 bean,再进行排序比较好?

  • 資深大佬 : mingmingtiexue

    不知道我有没有理解 你的意思。
    使用 zk, 节点是 需要的 bean 的名字逗号分割,赋给一个变量。
    同时解决了是否用和顺序问题,包含名字就是用, 排序就是 handler 执行顺序。
    不过需要引入 zk 。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具