收藏755
分享
阅读11891
更新时间2022-04-11
步骤一:根据业务需求创建需要对外暴露的业务接口
public interface IDemoModule {
// 为方便引用,定义模块名称常量
String MODULE_NAME = "demomodule";
// 返回自定义模块的参数配置接口对象
IDemoModuleCfg getModuleCfg();
// 对外暴露的业务方法
String sayHi();
}步骤二:处理自定义模块的配置参数,下列代码假定测试模块有两个自定义参数
// 定义模块配置接口
public interface IDemoModuleCfg {
String getModuleParamOne();
String getModuleParamTwo();
}
// 实现模块配置接口
public class DemoModuleCfg implements IDemoModuleCfg {
private String __moduleParamOne;
private String __moduleParamTwo;
public DemoModuleCfg(YMP owner) {
// 从YMP框架中获取模块配置映射
Map _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;
}
} 步骤三:实现模块及业务接口
注:一定不要忘记在模块实现类上声明@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中添加模块的配置内容
格式: ymp.configs.<模块名称>.<参数名称>=[参数值]
ymp.configs.demomodule.module_param_one=module_param_one_value ymp.configs.demomodule.module_param_two=module_param_two_value
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();
}
}注:自定义模块不支持IoC、AOP等特性;
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习