Spring Boot中如何使用反射获取Bean并调用呢?
下文笔者讲述不使用Autowire或resource注解,
使用反射的方式调用bean的方法分享,如下所示
使用反射的方式调用bean的方法分享,如下所示
反射调用bean的实现思路
1.实现一个ApplicationContextAware接口 获取上下文信息ApplicationContext 2.此处就可以定义一个方法获取bean信息 3.获取bean信息后,即可使用反射运行其中的方法例:获取bean中的方法,并运行
package com.java265.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; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringContextUtil.applicationContext = applicationContext; } public static Object getBean(String name) throws BeansException{ return applicationContext.getBean(name); } } package com.java265.utils; import com.java265.bean.SpringContextUtil; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class TestClass { 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; } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。