您好,登錄后才能下訂單哦!
這篇文章主要介紹了springboot如何動態(tài)調(diào)用實現(xiàn)類,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
定義規(guī)則的多種類型
/** * 數(shù)據(jù)規(guī)則處理類型枚舉 */ public enum RuleType { MYRULEBYID1, MYRULEBYID2 }
接口
import java.util.List; import java.util.Map; public interface DataRuleParse { /** * 獲取規(guī)則處理的類型 * @return */ RuleType getRuleType(); /** * 根據(jù)規(guī)則處理類型生成sql * @return */ List<String> getSQl( Map<String,Object> paramMap); }
實現(xiàn)類,規(guī)則類型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) { //規(guī)則1實現(xiàn)方法 return null; }
實現(xiàn)類,規(guī)則類型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) { //規(guī)則2實現(xiàn)方法 return null; }
工廠類,調(diào)用方法獲取具體實現(xiàn)類
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; /** * 規(guī)則轉(zhuǎn)換工廠類 */ @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); } }
根據(jù)參數(shù)獲取對應(yīng)的方法,ruleName為MYRULEBYID1或者M(jìn)YRULEBYID2
DataRuleParse dataRuleParse= DataRuleParseFactory.getTrafficMode(ruleName); List<String> sqlList=dataRuleParse.getSQl(paramMap);
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");
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“springboot如何動態(tài)調(diào)用實現(xiàn)類”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。