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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值