springboot动态调用实现类方式
更新时间:2021年11月16日 13:54 点击:1730 作者:Gr_lbxx
springboot动态调用实现类
定义规则的多种类型
/** * 数据规则处理类型枚举 */ public enum RuleType { MYRULEBYID1, MYRULEBYID2 }
接口
import java.util.List; import java.util.Map; public interface DataRuleParse { /** * 获取规则处理的类型 * @return */ RuleType getRuleType(); /** * 根据规则处理类型生成sql * @return */ List<String> getSQl( Map<String,Object> paramMap); }
实现类,规则类型1
package gds.application.masterdata.DataRuleParse; import gds.application.common.constants.ConnectorConstants; import gds.application.common.constants.XmlConfigurationContants; import gds.application.common.util.ApplicationContextUtil; import gds.application.masterdata.constants.ConnectDataProcessesConstants; import gds.application.masterdata.service.impl.BatchExecutionSqlServiceImpl; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Component public class MYRULEBYID1 implements DataRuleParse{ @Override public RuleType getRuleType() { return RuleType.MYRULEBYID1; } @Override public List<String> getSQl( Map<String,Object> paramMap) { //规则1实现方法 return null; }
实现类,规则类型2
package gds.application.masterdata.DataRuleParse; import gds.application.common.constants.ConnectorConstants; import gds.application.common.constants.XmlConfigurationContants; import gds.application.common.util.ApplicationContextUtil; import gds.application.masterdata.constants.ConnectDataProcessesConstants; import gds.application.masterdata.service.impl.BatchExecutionSqlServiceImpl; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Component public class MYRULEBYID2 implements DataRuleParse{ @Override public RuleType getRuleType() { return RuleType.MYRULEBYID2; } @Override public List<String> getSQl( Map<String,Object> paramMap) { //规则2实现方法 return null; }
工厂类,调用方法获取具体实现类
import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * 规则转换工厂类 */ @Component public class DataRuleParseFactory implements ApplicationContextAware { private static Map<String, DataRuleParse> dataRuleBeanMap; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{ Map<String, DataRuleParse> map = applicationContext.getBeansOfType(DataRuleParse.class); dataRuleBeanMap = new HashMap<String, DataRuleParse>(); map.forEach((key, value) -> dataRuleBeanMap.put(value.getRuleType().toString(), value)); } public static <T extends DataRuleParse> T getTrafficMode(String ruleType) { return (T)dataRuleBeanMap.get(ruleType); } }
根据参数获取对应的方法,ruleName为MYRULEBYID1或者MYRULEBYID2
DataRuleParse dataRuleParse= DataRuleParseFactory.getTrafficMode(ruleName); List<String> sqlList=dataRuleParse.getSQl(paramMap);
springboot手动获取实现类
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(sc); weixinService = (IWeixinService) cxt.getBean("IWeixinService"); qqService = (IQQService) cxt.getBean("IQQService");
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。
原文出处:https://blog.csdn.net/Gr_lbxx/article/details/90486736
相关文章
- 这篇文章主要介绍了Spring AOP 对象内部方法间的嵌套调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-29
解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题
这篇文章主要介绍了解决springboot使用logback日志出现LOG_PATH_IS_UNDEFINED文件夹的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-28- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
- 这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
- 这篇文章主要介绍了详解springBoot启动时找不到或无法加载主类解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-16
- 这篇文章主要介绍了解决Vue watch里调用方法的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
- 这篇文章主要给大家介绍了关于c#中的WebService及其调用方式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了js实现调用网络摄像头及常见错误处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-07
- 这篇文章主要介绍了解决Springboot get请求是参数过长的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-17
- 这篇文章主要介绍了Springboot+TCP监听服务器搭建过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-28
- 这篇文章介绍了c#动态调用Webservice的两种方法实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
Spring Boot项目@RestController使用重定向redirect方式
这篇文章主要介绍了Spring Boot项目@RestController使用重定向redirect方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-02- 这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
- 下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
springboot中使用@Transactional注解事物不生效的坑
这篇文章主要介绍了springboot中使用@Transactional注解事物不生效的原因,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-26详解SpringBoot之访问静态资源(webapp...)
这篇文章主要介绍了详解SpringBoot之访问静态资源(webapp...),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-14- 这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19