博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Srpingboot controller service模板实现
阅读量:7097 次
发布时间:2019-06-28

本文共 5423 字,大约阅读时间需要 18 分钟。

BaseController
package com.example.demo.controller;import com.example.demo.service.BaseService;import com.example.demo.utils.DaoUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.AutoConfigureOrder;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@RestController@RequestMapping("base")public class BaseController {    @PostMapping("select")    public void test1(@RequestBody  Map
t){ DaoUtils.select(t); }}
AbstractParams
package com.example.demo.entity;import java.util.Map;public abstract class AbstractParams {    public abstract 
T convertParams(Map map);}

Params1

package com.example.demo.entity;import java.util.Map;public class Params1 extends AbstractParams{    @Override    public Params1 convertParams(Map map) {        System.out.printf("Params1");        return new Params1();    }}

Params2

package com.example.demo.entity;import java.util.Map;public class Params2 extends AbstractParams{    @Override    public Params1 convertParams(Map map) {        System.out.printf("Params2");        return null;    }}
BaseService
package com.example.demo.service;import com.example.demo.entity.AbstractParams;public interface BaseService
{ Object getList(T t);}

Service1 Service2

package com.example.demo.service;import com.example.demo.entity.Params1;public interface Service1 extends BaseService
{}
package com.example.demo.service;import com.example.demo.entity.Params2;public interface Service2 extends BaseService
{}

ServiceImpl

package com.example.demo.service.impl;import com.example.demo.entity.Params1;import com.example.demo.service.Service1;import org.springframework.stereotype.Service;@Servicepublic class BaseServiceImpl implements Service1 {    @Override    public Object getList(Params1 abstractParams) {        System.out.printf("this is BaseServiceImpl.....");        return null;    }}
package com.example.demo.service.impl;import com.example.demo.entity.Params2;import com.example.demo.service.BaseService;import org.springframework.stereotype.Service;@Servicepublic class BaseServiceImpl2 implements BaseService
{ @Override public Object getList(Params2 abstractParams) { System.out.printf("this is BaseServiceImpl2....."); return null; }}

DaoUtils

package com.example.demo.utils;import com.example.demo.entity.AbstractParams;import com.example.demo.service.BaseService;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class DaoUtils
{ private static Map
serviceMap = null; private static Map
parametersMap = null; static{ serviceMap = new HashMap<>(); serviceMap.put("table1","baseServiceImpl"); serviceMap.put("table2","baseServiceImpl2"); parametersMap = new HashMap<>(); parametersMap.put("table1","com.example.demo.entity.Params1"); parametersMap.put("table2","com.example.demo.entity.Params2"); } public static
void select(Map
params){ try { //1.获取实例 String serviceName = serviceMap.get(params.get("tableFlag"));// Class
clazz = (Class) Class.forName(serviceName); B serviceBean = (B) SpringUtils.getBean(serviceName); //2.获取方法 Class

paramsType = getParamsType(params); Method method = serviceBean.getClass().getMethod("getList",paramsType); //3.设置参数 P convertedParams = convertParams(params,paramsType); //执行方法 method.invoke(serviceBean,convertedParams); } catch (Exception e) { e.printStackTrace(); } } private static

Class

getParamsType(Map

params){ try { Class tClass = Class.forName(parametersMap.get(params.get("tableFlag"))); return tClass; } catch (ClassNotFoundException e) { e.printStackTrace(); } return null; } private static

P convertParams(Map

params, Class

paramsType){ try { P bean = paramsType.newInstance(); P params1 = bean.convertParams(params); return params1; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; }}

SpringUtils

package com.example.demo.utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;@Componentpublic class SpringUtils implements ApplicationContextAware {    // Spring应用上下文环境    private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        SpringUtils.applicationContext = applicationContext;    }    /**     * @return ApplicationContext     */    public static ApplicationContext getApplicationContext() {        return applicationContext;    }    /**     * 获取对象     *     * @param name     * @return Object     * @throws BeansException     */    public static Object getBean(String name) throws BeansException {        return applicationContext.getBean(name);    }}

 

工程结构

 

转载于:https://www.cnblogs.com/jiaqirumeng/p/9266246.html

你可能感兴趣的文章
智能车学习(三)—— ADC学习
查看>>
精通iOS开发(第5版)
查看>>
json对象的封装与解析
查看>>
YARN & HDFS2 安装和配置Kerberos
查看>>
HDU1698:Just a Hook(线段树区间更新)
查看>>
SoapUI Pro Project Solution Collection-DataSource(jdbc,excel)
查看>>
Docker学习总结
查看>>
文件服务器 之 ProFTPD+MySQL 认证
查看>>
SQL Server Logins, Database Users, Database Roles and Schemas
查看>>
makefile语法
查看>>
Python3.x和Python2.x的区别
查看>>
pickle和cPickle:Python对象的序列化(上)
查看>>
C#操作RTF文档
查看>>
Dreamweaver & Flash & Photoshop网页设计基础与实例教程(职业白金版)
查看>>
UESTC 1153 The Queen's New Necklaces (Burnside定理)
查看>>
acdream1197 Points In Cuboid
查看>>
topcoder srm 390 div1
查看>>
无法远程链接sqlserver的解决办法
查看>>
WinRT比.NET快了,还是Win8比Win7快
查看>>
SecureCRT 字体 颜色 修改 背景色 键盘映射 Home end delete
查看>>