기준 치수
커스텀 모듈 생성
1단계: 비즈니스 요구 사항에 따라 외부 세계에 노출되어야 하는 비즈니스 인터페이스 생성
public interface IDemoModule { // 为方便引用,定义模块名称常量 String MODULE_NAME = "demomodule"; // 返回自定义模块的参数配置接口对象 IDemoModuleCfg getModuleCfg(); // 对外暴露的业务方法 String sayHi(); }
2단계: 커스텀 모듈의 구성 매개변수 처리 다음 코드는 테스트 모듈에 두 개의 맞춤 매개변수
// 定义模块配置接口 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; } }
3단계: 모듈 및 비즈니스 인터페이스 구현
참고: 모듈에
@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!"; } }
4단계: 모듈 구성 콘텐츠를 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 및 기타 기능을 지원합니다.