diff --git a/congomall-framework-all/congomall-designpattern-spring-boot-starter/src/main/java/org/opengoofy/congomall/springboot/starter/designpattern/chain/AbstractChainContext.java b/congomall-framework-all/congomall-designpattern-spring-boot-starter/src/main/java/org/opengoofy/congomall/springboot/starter/designpattern/chain/AbstractChainContext.java index 3f3d3738847db2becddcd7b99d5c4b27be421f69..9fd6e5354b57589432cd8b163aa23cca155f35ef 100644 --- a/congomall-framework-all/congomall-designpattern-spring-boot-starter/src/main/java/org/opengoofy/congomall/springboot/starter/designpattern/chain/AbstractChainContext.java +++ b/congomall-framework-all/congomall-designpattern-spring-boot-starter/src/main/java/org/opengoofy/congomall/springboot/starter/designpattern/chain/AbstractChainContext.java @@ -17,14 +17,13 @@ package org.opengoofy.congomall.springboot.starter.designpattern.chain; -import com.google.common.collect.Maps; import org.opengoofy.congomall.springboot.starter.base.ApplicationContextHolder; import org.springframework.boot.CommandLineRunner; import org.springframework.core.Ordered; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; import java.util.Comparator; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -37,9 +36,9 @@ import java.util.stream.Collectors; * @公众号 马丁玩编程,关注回复:资料,领取后端技术专家成长手册 */ public final class AbstractChainContext implements CommandLineRunner { - - private final Map> abstractChainHandlerContainer = Maps.newHashMap(); - + + private Map> abstractChainHandlerContainer; + /** * 责任链组件执行 * @@ -53,21 +52,12 @@ public final class AbstractChainContext implements CommandLineRunner { } abstractChainHandlers.forEach(each -> each.handler(requestParam)); } - + @Override public void run(String... args) throws Exception { - Map chainFilterMap = ApplicationContextHolder - .getBeansOfType(AbstractChainHandler.class); - chainFilterMap.forEach((beanName, bean) -> { - List abstractChainHandlers = abstractChainHandlerContainer.get(bean.mark()); - if (CollectionUtils.isEmpty(abstractChainHandlers)) { - abstractChainHandlers = new ArrayList(); - } - abstractChainHandlers.add(bean); - List actualAbstractChainHandlers = abstractChainHandlers.stream() - .sorted(Comparator.comparing(Ordered::getOrder)) - .collect(Collectors.toList()); - abstractChainHandlerContainer.put(bean.mark(), actualAbstractChainHandlers); - }); + abstractChainHandlerContainer = ApplicationContextHolder.getBeansOfType(AbstractChainHandler.class).values().stream() + .collect(Collectors.groupingBy(AbstractChainHandler::mark, Collectors.collectingAndThen(Collectors.toList(), + list -> list.stream().sorted(Comparator.comparing(Ordered::getOrder)).collect(Collectors.toCollection(LinkedList::new)) + ))); } }