zoukankan      html  css  js  c++  java
  • spring通过bean名称,方法名,反射调用服务。

    示例代码

    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.util.ReflectionUtils;
    
    import java.lang.reflect.Method;
    
    public class SpringReflectUtils implements ApplicationContextAware {
        /**
         * Spring容器 spring应用上下文对象
         */
        private static ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            SpringReflectUtils.applicationContext = applicationContext;
        }
    
        /**
         * 对象名称获取spring bean对象
         * @param name
         * @return
         * @throws BeansException
         */
        public static Object getBean(String name) throws BeansException {
            return applicationContext.getBean(name);
        }
    
        /**
         * 根据 服务名称 ,方法名 反射调用  spring bean 中的 方法
         * @param serviceName 服务名
         * @param methodName 方法名
         * @param params 参数
         * @return
         * @throws Exception
         */
        public static Object springInvokeMethod(String serviceName, String methodName, Object[] params) throws Exception {
            Object service = getBean(serviceName);
            Class<? extends Object>[] paramClass = null;
            if (params != null) {
                int paramsLength = params.length;
                paramClass = new Class[paramsLength];
                for (int i = 0; i < paramsLength; i++) {
                    paramClass[i] = params[i].getClass();
                }
            }
            // 找到方法
            Method method = ReflectionUtils.findMethod(service.getClass(), methodName, paramClass);
            // 执行方法
            return ReflectionUtils.invokeMethod(method, service, params);
        }
    }
    
        

  • 相关阅读:
    前端性能优化——写给网页设计师和前端工程师看的
    V8引擎——详解
    Perl_实用报表提取语言
    qs.stringify和JSON.stringify()
    js之history
    js考察this,作用域链和闭包
    css table之合并单元格
    js手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法
    windows 杀进程
    axios库的使用
  • 原文地址:https://www.cnblogs.com/geekswg/p/15257332.html
Copyright © 2011-2022 走看看