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;
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


