java多态实现类:
接口多实现类,建一个记录实现类的表,表信息要有类的注解别名,如(“”),
然后通过id查询到查到注解别名的字段,通过springboot框架的applicationContext注解类getBean来获取接口的实现类服务
@Autowired
private ApplicationContext applicationContext;
//TODO 异步
IMmsApiUnifiedService mmsApiUnifiedService = (IMmsApiUnifiedService) applicationContext.getBean("MmsApiUnifiedService");
mmsApiUnifiedService.createChildSendTask(smsSend, clientAppInfo, mmsData);
getBean(“接口名”);
IMmsApiService mmsService = clientAppHelper.getMmsService(channel);
MmsEntity result = mmsService.mmsSendTask(smsSendSub, mmsData);
/**
* 根据通道获取处理通道模板的处理器服务类
*
* @param smsChannel
* @return
*/
public IMmsApiService getMmsService(SmsChannel smsChannel) {
SmsTempl smsTempl = smsTemplService.selectSmsTemplById(smsChannel.getTemplId());
if (smsTempl.getTemplStatus() != 1) {
throw new MmsApiException("通道模板不可用");
}
return getMmsService(smsTempl);
}
/**
* 根据通道模板获取通道处理器服务类
*
* @param SmsTempl
* @return
*/
public IMmsApiService getMmsService(SmsTempl SmsTempl) {
//String sHandler = SmsTempl.getHandler();
SysClass sysClass = sysClassService.selectSysClassById(SmsTempl.getHandlerCall());
if (sysClass == null) {
throw new MmsApiException("处理服务不存在");
}
return getMmsService(sysClass.getAliasName());
}
/**
* 根据处理器类名或别名获取通道处理器服务类
*
* @param sHandler
* @return
*/
public IMmsApiService getMmsService(String sHandler) {
IMmsApiService mmsService;
try {
mmsService = (IMmsApiService) applicationContext.getBean(sHandler);//"MmsServiceAspirecn");
} catch (Exception e) {
throw new MmsApiException("通道未配置处理器,请与管理员联系");
}
return mmsService;
}
/**
* 获取回调处理服务
*/
public IMmsCallbackService getCallbackService(SmsTempl smsTempl) {
if (smsTempl == null)
throw new MmsApiException("没有配置通道模板,请与管理员联系");
Long classId = smsTempl.getHandlerCallback();
SysClass sysClass = sysClassService.selectSysClassById(classId);
if (sysClass == null)
throw new MmsApiException("未找到对应的回调处理器,请与管理员联系");
return getCallbackService(sysClass.getAliasName());
}
/**
* 获取回调处理服务
*/
public IMmsCallbackService getCallbackService(String sHandler) {
IMmsCallbackService mmsCallbackService;
try {
mmsCallbackService = (IMmsCallbackService) applicationContext.getBean(sHandler);//"MmsServiceAspirecn");
} catch (Exception e) {
throw new MmsApiException("回调处理器" + sHandler + "不存在,请与管理员联系");
}
return mmsCallbackService;
}
通过通道获取模板,通过模板获取处理类的别名,
通过springboot的getBean(“类别名”)获取具体的实现类服务