模塊(Module)

2018-12-24 21:54 更新
創(chuàng)建自定義模塊
  • 步驟一:根據(jù)業(yè)務需求創(chuàng)建需要對外暴露的業(yè)務接口

    public interface IDemoModule {
    
        // 為方便引用,定義模塊名稱常量
        String MODULE_NAME = "demomodule";
    
        // 返回自定義模塊的參數(shù)配置接口對象
        IDemoModuleCfg getModuleCfg();
    
        // 對外暴露的業(yè)務方法
        String sayHi();
    }
    
  • 步驟二:處理自定義模塊的配置參數(shù),下列代碼假定測試模塊有兩個自定義參數(shù)

    // 定義模塊配置接口
    public interface IDemoModuleCfg {
    
        String getModuleParamOne();
    
        String getModuleParamTwo();
    }
    
    // 實現(xiàn)模塊配置接口
    public class DemoModuleCfg implements IDemoModuleCfg {
    
        private String __moduleParamOne;
    
        private String __moduleParamTwo;
    
        public DemoModuleCfg(YMP owner) {
            // 從YMP框架中獲取模塊配置映射
            Map<String, String> _moduleCfgs = owner.getConfig().getModuleConfigs(IDemoModule.MODULE_NAME);
            //
            __moduleParamOne = _moduleCfgs.get("module_param_one");
            __moduleParamTwo = _moduleCfgs.get("module_param_two");
        }
    
        public String getModuleParamOne() {
            return __moduleParamOne;
        }
    
        public String getModuleParamTwo() {
            return __moduleParamTwo;
        }
    }
    
  • 步驟三:實現(xiàn)模塊及業(yè)務接口

    :一定不要忘記在模塊實現(xiàn)類上聲明@Module注解,這樣才能被YMP框架自動掃描、加載并初始化;

    @Module
    public class DemoModule implements IModule, IDemoModule {
    
        private YMP __owner;
    
        private IDemoModuleCfg __moduleCfg;
    
        private boolean __inited;
    
        public String getName() {
            return IDemoModule.MODULE_NAME;
        }
    
        public void init(YMP owner) throws Exception {
            if (!__inited) {
                __owner = owner;
                __moduleCfg = new DemoModuleCfg(owner);
                //
                __inited = true;
            }
        }
    
        public boolean isInited() {
            return __inited;
        }
    
        public YMP getOwner() {
            return __owner;
        }
    
        public IDemoModuleCfg getModuleCfg() {
            return __moduleCfg;
        }
    
        public void destroy() throws Exception {
            if (__inited) {
                __inited = false;
                //
                __moduleCfg = null;
                __owner = null;
            }
        }
    
        public String sayHi() {
            return "Hi, YMP!";
        }
    }
    
  • 步驟四:在YMP的配置文件ymp-conf.properties中添加模塊的配置內(nèi)容

    格式: ymp.configs.<模塊名稱>.<參數(shù)名稱>=[參數(shù)值]

    ymp.configs.demomodule.module_param_one=module_param_one_value
    ymp.configs.demomodule.module_param_two=module_param_two_value
    
調(diào)用自定義模塊
public static void main(String[] args) throws Exception {
    YMP.get().init();
    try {
        // 獲取自定義模塊實例對象
        IDemoModule _demoModule = YMP.get().getModule(IDemoModule.class);
        // 調(diào)用模塊業(yè)務接口方法
        System.out.println(_demoModule.sayHi());
        // 調(diào)用模塊配置信息
        System.out.println(_demoModule.getModuleCfg().getModuleParamOne());
    } finally {
        YMP.get().destroy();
    }
}

:自定義模塊不支持IoC、AOP等特性;

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號