springboot动态调用实现类方式

网友投稿 976 2022-11-22

springboot动态调用实现类方式

springboot动态调用实现类方式

目录springboot动态调用实现类springboot手动获取实现类

springboot动态调用实现类

定义规则的多种类型

/**

* 数据规则处理类型枚举

*/

public enum RuleType {

MYRULEBYID1,

MYRULEBYID2

}

接口

import java.util.List;

import java.util.Map;

public interface DataRuleParse {

/**

* 获取规则处理的类型

* @return

*/

RuleType getRuleType();

/**

* 根据规则处理类型生成sql

* @return

*/

List getSQl( Map 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 getSQl( Map 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.ConnectDataProceshttp://sesConstants;

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 getSQl( Map 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 dataRuleBeanMap;

@Override

public void sethttp://ApplicationContext(ApplicationContext applicationContext) throws BeansException{

Map map = applicationContext.getBeansOfType(DataRuleParse.class);

dataRuleBeanMap = new HashMap();

map.forEach((key, value) -> dataRuleBeanMap.put(value.getRuleType().toString(), value));

}

public static T getTrafficMode(String ruleType) {

return (T)dataRuleBeanMap.get(ruleType);

}

}

根据参数获取对应的方法,ruleName为MYRULEBYID1或者MYRULEBYID2

DataRuleParse dataRuleParse= DataRuleParseFactory.getTrafficMode(ruleName);

List 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");

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hibernate基础
下一篇:并发编程专题(四)-线程的控制
相关文章

 发表评论

暂时没有评论,来抢沙发吧~