通过反射调用Spring容器中的类方法满足依赖注入和切面编程的需求

首先获取到容器中的实例

**
 * @author by xuchenggang
 * @Classname SpringContextUtil
 * @Description TODO
 * @date 2019/12/20 8:53
 */
@Component
public class SpringContextUtil implements ApplicationContextAware {
    /**
     * Spring应用上下文环境
     */
    private static ApplicationContext applicationContext;

    /**
     * 实现ApplicationContextAware接口的回调方法,设置上下文环境
     *
     * @param applicationContext
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextUtil.applicationContext = applicationContext;
    }

    /**
     * @return ApplicationContext
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 获取对象
     *
     * @param name
     * @return Object
     * @throws BeansException
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }

    public static Object getBean(String name, Class cla) throws BeansException {
        return applicationContext.getBean(name, cla);
    }
}
   Class paramType = Class.forName(paramTypeStr);
   Class clazz = Class.forName(className);
   String simpleName = clazz.getSimpleName();
   String firstLowerName = simpleName.substring(0, 1).toLowerCase() + simpleName.substring(1);
   //通过此方法去Spring容器中获取Bean实例
   Object obj = SpringContextUtil.getBean(firstLowerName, clazz);
   Method method = obj.getClass().getDeclaredMethod(methodName, paramType);
   method.invoke(obj, JSON.parseObject(param, paramType));
posted @ 2019-12-20 10:54  皮肤黝黑的小白  阅读(699)  评论(0)    收藏  举报