博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)
阅读量:1950 次
发布时间:2019-04-27

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

继承ApplicationContextAware获取ApplicationContext:

package com.xxxx.xxxx.bean;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringContextUtil implements ApplicationContextAware {    private static ApplicationContext applicationContext;    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        SpringContextUtil.applicationContext = applicationContext;    }    public static Object getBean(String name) throws BeansException{        return applicationContext.getBean(name);    }}

这样创造一个工具类即可获取Spring Boot管理的各种Bean。

比如下面这个Service接口:

实现如下:

Controller如下:

这里获取了tableName后,解析tableName的字符串,然后通过反射直接调用service。

EntityAnalys.java如下:

package com.xxxx.xxxx.utils;import com.xxxx.xxxx.bean.SpringContextUtil;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class EntityAnalyse {    public static Object getAllObject(String tableName, String methodName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {        String tName = tableName + "ServiceImpl";        Class cls = SpringContextUtil.getBean(tName).getClass();        Method m = cls.getDeclaredMethod(methodName);        Object invoke = m.invoke(SpringContextUtil.getBean(tName));        return invoke;    }    public static Object getOneObjectByID(String tableName, String methodName, String id) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {        String tName = tableName + "ServiceImpl";        Class cls = SpringContextUtil.getBean(tName).getClass();        Method m = cls.getDeclaredMethod(methodName, String.class);        Object invoke = m.invoke(SpringContextUtil.getBean(tName), id);        return invoke;    }}

 

转载地址:http://idmif.baihongyu.com/

你可能感兴趣的文章
一段java代码是怎样执行的?
查看>>
Vmware设置共享磁盘
查看>>
基础介绍-红黑树-数据结构
查看>>
基本操作及Java代码实现-红黑树-数据结构和算法
查看>>
插入与Java代码实现-红黑树-数据结构和算法
查看>>
删除及Java代码实现-红黑树-数据结构和算法
查看>>
Springboot内部类加注解失效的原因分析和解决方案
查看>>
Hbase与Hive的关系
查看>>
java工具类解压缩zip和rar
查看>>
java获取服务器启动时间
查看>>
正则中的 (?i) (?s) (?m) (?is) (?im)
查看>>
获取html中文档的所有img标签
查看>>
Java获取字符串单词个数
查看>>
软件安装向导jquery.steps.js
查看>>
require.js入门
查看>>
scss入门
查看>>
markdown编辑器示例
查看>>
@RequestParam与@PathVariable的区别
查看>>
ACE编辑器入门
查看>>
解决eclipse不能设置版本高的tomcat
查看>>