• JDMatrix


    首先介绍一下JD-matrix:通过对matrix框架的架构了解,发现JD的matrix是对DDD领域驱动设计理念的一种具体实现。
    matrix框架中包含有一下注解:

    @APP
    @prodect
    @Domain
    @DomainService
    @DomianAbility
    @DomainAbilityExtension
    @Extension
    

      

    @APP

    @APP表示垂直业务身份
    内容包含

    /**
     * 业务身份定义类
     * code        业务身份code
     * name        业务身份名称
     * priority    优先级,数值越大优先级约高
     * parserClass 业务身份解析类
     */
    @App(code = BizApp.CODE,
            name = "XXX",
            priority = 300,
            version = "1.0.0",
            parserClass = BizAppCodeParser.class)
    public class BizApp extends BaseApp {
    
        public static final String CODE="XXX";
    }
    

      

    @product

    @Product表示水平业务身份

    /**
     * 业务身份定义类
     * code        业务身份code
     * name        业务身份名称
    **/
    @Product(code = ProductAProduct.CODE, name = "水平业务身份A")
    public class ProductAProduct extends BaseProduct {
        public static final String CODE = "productA";
    
        /**
         * 判断水平业务身份是否被击中 返回true则为击中
         */
        @Override
        public boolean isEffect(DomainModel domainModel) {
            return true;
        }
    
        /**
         * 返回禁止掉的水平业务身份code集合
         */
        @Override
        public Collection<String> getDisabledExtCodes() {
            return null;
        }
    }
    

      

    @Domain 业务领域

     
    @Domain(code = UseDomain.CODE, name = "用户")
    public class UseDomain {
    
        public static final String CODE="TRADE.cart.user";
    
    }
    

      

    @DomainService 领域服务

     
    public interface GetUserDiscountService  extends IDomainService {
        String ITEM_SERVICE_SAVING_ORDER = "DOMAIN_SERVICE_GETDISCOUNT";
    
        @DomainService(
                parent = UseDomain.CODE,
                code = ITEM_SERVICE_SAVING_ORDER,
                name = "XXX"
        )
        public Double getDiscount(OrderModel order);
    }
    

      

    @DomainAbility 领域能力

    /**
     * CheckSubmitOrderAbility简介
     * 能力类
     * 需要@DomainAbility注解 parent 为领域code
     * 需要继承BaseDomainAbility类 第一个泛型orderModel用于判断业务身份,垂直业务身份,水平业务身份是否击中的入参参考
     * com.jd.migration.matrx2.fresh7.ext.BizAppCodeParser类的三个方法 。第二个泛型为能力要调用的拓展点方法。
     */
    @DomainAbility(name = "XXX", parent = TesthjzDomain.CODE)
    public class CheckSubmitOrderAbility extends BaseDomainAbility<OrderModel, CheckSubmitOrderExt> {
        ....
    }
    

      

    @DomainAbilityExtension 扩展点定义

    public interface GetUserDiscountExt  extends IDomainAbilityExtension {
    
        String EXT_CHECK_CODE="EXT_TRADE_CART_USE_GetUserDiscountExt_getDiscount";
    
        @DomainAbilityExtension(
                code = EXT_CHECK_CODE,
                name = "XXX"
        )
        public ResponseResult getDiscount(OrderModel order);
    }
    

      

    @Extension 扩展点实现

     
    @Extension(code = BrandFlashApp.CODE,scenario = "nike" ,index = 1)
    public class BrandFlashGetUserDiscountExtImpl implements GetUserDiscountExt {
       ....
    }
    

      

     
     
  • 相关阅读:
    docker-compose 命令不存在
    linux安装rabbitmq ssm集成rabbitmq
    tomcat参数错误 服务器400
    无限极分内 自联查询
    图片移入变大 点击图片切换 点击按钮显示图片
    js正则表达式基本书写
    随鼠标移动
    输入电话号码
    添加新句子
    窗口的弹出与关闭
  • 原文地址:https://www.cnblogs.com/q1359720840/p/16196954.html
Copyright © 2020-2023  润新知