package com.jd.car.raiden.service.bill.configuration; import com.google.common.collect.Lists; import com.jd.car.raiden.service.bill.configuration.handler.HandleHandler; import com.jd.car.raiden.service.bill.configuration.handler.handle.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; /** * DiscountConfiguration * * @author zhouliang102 * @date 2022/07/18 */ @Configuration public class DiscountConfiguration { /** * 处理处理程序列表 * * @return {@link List}<{@link HandleHandler}> */ @Bean(name = "handle-handler-list") public List<HandleHandler> handleHandlerList() { List<HandleHandler> handlerList = Lists.newArrayList(); handlerList.add(allType()); handlerList.add(jBYType()); handlerList.add(locType()); handlerList.add(popType()); handlerList.add(selfSupportType()); handlerList.add(statistics()); handlerList.add(orderType()); return handlerList; } /** * 所有类型 * * @return {@link HandleHandler} */ @Bean public HandleHandler allType() { return new AllTypeHandler(); } @Bean public HandleHandler jBYType() { return new JBYTypeHandler(); } @Bean public HandleHandler locType() { return new LocTypeHandler(); } @Bean public HandleHandler orderType(){ return new OrderHandler(); } @Bean public HandleHandler popType() { return new PopTypeHandler(); } @Bean public HandleHandler selfSupportType() { return new SelfSupportTypeHandler(); } /** * 统计数据 * * @return {@link HandleHandler} */ @Bean public HandleHandler statistics() { return new StatisticsHandler(); } }
package com.jd.car.raiden.service.bill.configuration.handler; import com.jd.car.raiden.service.bill.vo.DiscountContext; import com.jd.car.userinfo.AuthInfoVo; /** * HandleHandler * * @author zhouliang102 * @date 2022/07/18 */ public interface HandleHandler { /** * 处理 * * @param cxt cxt * @param authInfoVo 身份验证信息签证官 */ void handle(DiscountContext cxt, AuthInfoVo authInfoVo); }
@Resource(name = "handle-handler-list") private List<HandleHandler> initHandlerList;
for (HandleHandler handler : this.initHandlerList) { handler.handle(cxt, authInfoVo); }