Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)
继承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;@Configuration
public class SpringContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic 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;}
}
Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)相关推荐
- Spring Boot笔记-logback-spring.xml获取application.properties中的变量
logback.xml的加载顺序早于springboot的application.yml (或application.properties) 配置文件当然读不到application.yml(或app ...
- Spring学习笔记:第一个Spring Boot程序HelloWorld
Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...
- Spring实战笔记——(1)Spring之旅(上)
Spring实战笔记--(1)Spring之旅 文章目录 Spring实战笔记--(1)Spring之旅 1.1简化Java开发 1.1.1 激发POJO的潜能 1.1.2依赖注入 依赖注入的实现 构 ...
- 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )
文章目录 一.检查订阅方法缓存 二.反射获取订阅类中的订阅方法 三.完整代码示例 一.检查订阅方法缓存 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 ...
- 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用中的 Element[] dexElements )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “插件包“ 中的 Element[] dexElements )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- java反射获取泛型_如何通过Java反射获取泛型类型信息
前言 关于Java泛型,很多人都有一个误解,认为Java代码在编译时会擦除泛型的类型,从而在运行时导致没法访问其类型,这其实并不完全正确,因为有一部分泛型信息是可以在运行时动态获取的,这部分信息基本能 ...
- 通过反射获取Spring定时器@Scheduled注解中fixedDelay时间
前言: 如何获取Spring的定时器注解@Scheduled中的时间值(即获取3000):@Scheduled(fixedDelay = 3000) 注:定时器类:org.springframewor ...
- 遇见狂神说 - Spring学习笔记(一)- Spring基础概述
目录 1.What? Spring是一个轻量级控制反转和面向切面的容器框架 历史: 2002年,首次推出了Spring框架的雏形:interface21框架 Spring框架以interface21框 ...
最新文章
- Nat. Mach. Intell. | FFPred-GAN:“以假乱真“—基于GAN创建合成特征样本改进蛋白质功能预测...
- 打造U盘下的linux 亲测可以使用
- ECshop商城程序常见的96个小问题汇总
- linux下nginx与php设置开机启动代码
- android 屏蔽home键操作
- tensorflow 标准数据读取 tfrecords
- activity中指定一页面动态设置软键盘弹出属性
- 保持学习,从这几个公众号开始!
- 程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬
- 利用BitLocker和VHD实现共享文件加密
- 程序员面试宝典 笔记 第七章
- Python 读取/存储 yaml 文件
- JavaScript基础知识指南-思维导图
- 2015年4月工作记录和阅读记录
- steam插件_Steam是如何了解一款游戏的?看了这篇文章会让你豁然开朗!
- yolov3安卓实现_Android—yolov3目标检测移植
- 解决Win键不能用的问题
- 设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。
- 苹果8p手机的指纹解锁为什么会失灵呢?怎么解决
- java窗体 个人信心_帮忙写下代码java swing,个人信息实例