Module


Créer un module personnalisé
  • Étape 1 : Créer une interface métier qui doit être exposée au monde extérieur en fonction des exigences de l'entreprise

    public interface IDemoModule {
    
        // 为方便引用,定义模块名称常量
        String MODULE_NAME = "demomodule";
    
        // 返回自定义模块的参数配置接口对象
        IDemoModuleCfg getModuleCfg();
    
        // 对外暴露的业务方法
        String sayHi();
    }
  • Étape 2 : Traiter les paramètres de configuration du module personnalisé . Le code suivant suppose que le module de test a deux paramètres personnalisés

    // 定义模块配置接口
    public interface IDemoModuleCfg {
    
        String getModuleParamOne();
    
        String getModuleParamTwo();
    }
    
    // 实现模块配置接口
    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;
        }
    }
  • Étape 3 : Implémentez le module et l'interface métier

    Remarque : Assurez-vous de ne pas oublier de déclarer l'@Moduleannotation sur le module. classe d'implémentation, afin qu'il puisse être automatiquement analysé, chargé et initialisé par le framework 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!";
        }
    }
  • Étape 4 : Ajoutez le contenu de configuration du module au fichier de configuration YMP ymp-conf.properties

    Format : ymp.configs.<Nom du module>.<Nom du paramètre> =[Valeur du paramètre]

    ymp.configs.demomodule.module_param_one=module_param_one_value
    ymp.configs.demomodule.module_param_two=module_param_two_value
Appeler un module personnalisé
public static void main(String[] args) throws Exception {
    YMP.get().init();
    try {
        // 获取自定义模块实例对象
        IDemoModule _demoModule = YMP.get().getModule(IDemoModule.class);
        // 调用模块业务接口方法
        System.out.println(_demoModule.sayHi());
        // 调用模块配置信息
        System.out.println(_demoModule.getModuleCfg().getModuleParamOne());
    } finally {
        YMP.get().destroy();
    }
}

Remarque : Personnalisé les modules ne prend en charge IoC, AOP et d'autres fonctionnalités ;