继承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)相关推荐

  1. Spring Boot笔记-logback-spring.xml获取application.properties中的变量

    logback.xml的加载顺序早于springboot的application.yml (或application.properties) 配置文件当然读不到application.yml(或app ...

  2. Spring学习笔记:第一个Spring Boot程序HelloWorld

    Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...

  3. Spring实战笔记——(1)Spring之旅(上)

    Spring实战笔记--(1)Spring之旅 文章目录 Spring实战笔记--(1)Spring之旅 1.1简化Java开发 1.1.1 激发POJO的潜能 1.1.2依赖注入 依赖注入的实现 构 ...

  4. 【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )

    文章目录 一.检查订阅方法缓存 二.反射获取订阅类中的订阅方法 三.完整代码示例 一.检查订阅方法缓存 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 ...

  5. 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用中的 Element[] dexElements )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  6. 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “插件包“ 中的 Element[] dexElements )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. java反射获取泛型_如何通过Java反射获取泛型类型信息

    前言 关于Java泛型,很多人都有一个误解,认为Java代码在编译时会擦除泛型的类型,从而在运行时导致没法访问其类型,这其实并不完全正确,因为有一部分泛型信息是可以在运行时动态获取的,这部分信息基本能 ...

  8. 通过反射获取Spring定时器@Scheduled注解中fixedDelay时间

    前言: 如何获取Spring的定时器注解@Scheduled中的时间值(即获取3000):@Scheduled(fixedDelay = 3000) 注:定时器类:org.springframewor ...

  9. 遇见狂神说 - Spring学习笔记(一)- Spring基础概述

    目录 1.What? Spring是一个轻量级控制反转和面向切面的容器框架 历史: 2002年,首次推出了Spring框架的雏形:interface21框架 Spring框架以interface21框 ...

最新文章

  1. Nat. Mach. Intell. | FFPred-GAN:“以假乱真“—基于GAN创建合成特征样本改进蛋白质功能预测...
  2. 打造U盘下的linux 亲测可以使用
  3. ECshop商城程序常见的96个小问题汇总
  4. linux下nginx与php设置开机启动代码
  5. android 屏蔽home键操作
  6. tensorflow 标准数据读取 tfrecords
  7. activity中指定一页面动态设置软键盘弹出属性
  8. 保持学习,从这几个公众号开始!
  9. 程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬
  10. 利用BitLocker和VHD实现共享文件加密
  11. 程序员面试宝典 笔记 第七章
  12. Python 读取/存储 yaml 文件
  13. JavaScript基础知识指南-思维导图
  14. 2015年4月工作记录和阅读记录
  15. steam插件_Steam是如何了解一款游戏的?看了这篇文章会让你豁然开朗!
  16. yolov3安卓实现_Android—yolov3目标检测移植
  17. 解决Win键不能用的问题
  18. 设有4x4的方阵,其中的元素由键盘输入。分别求出主对角线上元素之和、辅对角线上元素之积、方阵中最大的元素。
  19. 苹果8p手机的指纹解锁为什么会失灵呢?怎么解决
  20. java窗体 个人信心_帮忙写下代码java swing,个人信息实例

热门文章

  1. 产品经理常犯的七大错误
  2. VS2005为什么会自动关闭?使用Visual Assist X的要注意了
  3. 少走弯路的10个忠告
  4. 15 道超经典大厂 Java 面试题!重中之重
  5. 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
  6. 10个强大实用数据地图,不懂代码也能做!(附demo)
  7. 天亮了起来的飞鸽传书官方下载
  8. 2013年,6月20日,今天非常无聊啊。
  9. 今天的绿得像碧玉的 飞鸽
  10. 【原创】技术人员如何去面试?