org.springframework.core.LocalVariableTableParameterNameDiscoverer#getParameterNames ( )源码实例Demo

下面列出了org.springframework.core.LocalVariableTableParameterNameDiscoverer#getParameterNames ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: FEBS-Cloud   文件: LogServiceImpl.java
@Override
public void saveLog(ProceedingJoinPoint point, Method method, String ip, String operation, String username, long start) {
    Log log = new Log();
    log.setIp(ip);

    log.setUsername(username);
    log.setTime(System.currentTimeMillis() - start);
    log.setOperation(operation);

    String className = point.getTarget().getClass().getName();
    String methodName = method.getName();
    log.setMethod(className + "." + methodName + "()");

    Object[] args = point.getArgs();
    LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
    String[] paramNames = u.getParameterNames(method);
    if (args != null && paramNames != null) {
        StringBuilder params = new StringBuilder();
        params = handleParams(params, args, Arrays.asList(paramNames));
        log.setParams(params.toString());
    }
    log.setCreateTime(new Date());
    log.setLocation(AddressUtil.getCityInfo(ip));
    // 保存系统日志
    save(log);
}
 
源代码2 项目: gpmall   文件: DistributedLockAspect.java
/**
 * 获取缓存的key
 * key 定义在注解上,支持SPEL表达式
 */
private String parseKey(String key, Method method, Object[] args) {
    //获取被拦截方法参数名列表(使用Spring支持类库)
    LocalVariableTableParameterNameDiscoverer u =
            new LocalVariableTableParameterNameDiscoverer();
    String[] paraNameArr = u.getParameterNames(method);

    //使用SPEL进行key的解析
    ExpressionParser parser = new SpelExpressionParser();
    //SPEL上下文
    StandardEvaluationContext context = new StandardEvaluationContext();
    //把方法参数放入SPEL上下文中
    for (int i = 0; i < paraNameArr.length; i++) {
        context.setVariable(paraNameArr[i], args[i]);
    }
    return parser.parseExpression(key).getValue(context, String.class);
}
 
源代码3 项目: mall4j   文件: SpelUtil.java
/**
 * 支持 #p0 参数索引的表达式解析
 * @param rootObject 根对象,method 所在的对象
 * @param spel 表达式
 * @param method ,目标方法
 * @param args 方法入参
 * @return 解析后的字符串
 */
public static String parse(Object rootObject,String spel, Method method, Object[] args) {
    if (StrUtil.isBlank(spel)) {
        return StrUtil.EMPTY;
    }
    //获取被拦截方法参数名列表(使用Spring支持类库)
    LocalVariableTableParameterNameDiscoverer u =
            new LocalVariableTableParameterNameDiscoverer();
    String[] paraNameArr = u.getParameterNames(method);
    if (ArrayUtil.isEmpty(paraNameArr)) {
        return spel;
    }
    //使用SPEL进行key的解析
    ExpressionParser parser = new SpelExpressionParser();
    //SPEL上下文
    StandardEvaluationContext context = new MethodBasedEvaluationContext(rootObject,method,args,u);
    //把方法参数放入SPEL上下文中
    for (int i = 0; i < paraNameArr.length; i++) {
        context.setVariable(paraNameArr[i], args[i]);
    }
    return parser.parseExpression(spel).getValue(context, String.class);
}
 
源代码4 项目: jeecg-cloud   文件: AutoLogAspect.java
/**
* @Description: 获取请求参数
* @author: scott
* @date: 2020/4/16 0:10
* @param request:  request
* @param joinPoint:  joinPoint
* @Return: java.lang.String
*/
private String getReqestParams(HttpServletRequest request, JoinPoint joinPoint) {
	String httpMethod = request.getMethod();
	String params = "";
	if ("POST".equals(httpMethod) || "PUT".equals(httpMethod) || "PATCH".equals(httpMethod)) {
		Object[] paramsArray = joinPoint.getArgs();
		params = JSONObject.toJSONString(paramsArray);
	} else {
		MethodSignature signature = (MethodSignature) joinPoint.getSignature();
		Method method = signature.getMethod();
		// 请求的方法参数值
		Object[] args = joinPoint.getArgs();
		// 请求的方法参数名称
		LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
		String[] paramNames = u.getParameterNames(method);
		if (args != null && paramNames != null) {
			for (int i = 0; i < args.length; i++) {
				params += "  " + paramNames[i] + ": " + args[i];
			}
		}
	}
	return params;
}
 
源代码5 项目: jeecg-boot   文件: AutoLogAspect.java
/**
* @Description: 获取请求参数
* @author: scott
* @date: 2020/4/16 0:10
* @param request:  request
* @param joinPoint:  joinPoint
* @Return: java.lang.String
*/
private String getReqestParams(HttpServletRequest request, JoinPoint joinPoint) {
	String httpMethod = request.getMethod();
	String params = "";
	if ("POST".equals(httpMethod) || "PUT".equals(httpMethod) || "PATCH".equals(httpMethod)) {
		Object[] paramsArray = joinPoint.getArgs();
		params = JSONObject.toJSONString(paramsArray);
	} else {
		MethodSignature signature = (MethodSignature) joinPoint.getSignature();
		Method method = signature.getMethod();
		// 请求的方法参数值
		Object[] args = joinPoint.getArgs();
		// 请求的方法参数名称
		LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
		String[] paramNames = u.getParameterNames(method);
		if (args != null && paramNames != null) {
			for (int i = 0; i < args.length; i++) {
				params += "  " + paramNames[i] + ": " + args[i];
			}
		}
	}
	return params;
}
 
源代码6 项目: distributed-limit   文件: LimitAop.java
/**
 * 该方法只适用cglib
 *
 * @param key
 * @param method
 * @param args
 * @return
 */
private String parseKey(String key, Method method, Object[] args) {

    //如果不含# 则判断不为spel表达式,这有一定的误差,但是够用
    // fixme
    //TODO
    if (!key.contains( "#" ) || StringUtils.isEmpty( key )) {
        return key;
    }
    //获取被拦截方法参数名列表(使用Spring支持类库)
    LocalVariableTableParameterNameDiscoverer u =
            new LocalVariableTableParameterNameDiscoverer();
    String[] paraNameArr = u.getParameterNames( method );

    //使用SPEL进行key的解析
    ExpressionParser parser = new SpelExpressionParser();
    //SPEL上下文
    StandardEvaluationContext context = new StandardEvaluationContext();
    //把方法参数放入SPEL上下文中
    for (int i = 0; i < paraNameArr.length; i++) {
        context.setVariable( paraNameArr[i], args[i] );
    }
    return parser.parseExpression( key ).getValue( context, String.class );
}
 
private String getLockKey(Method method,String targetName, String methodName, String[] keys, Object[] arguments) {

        StringBuilder sb = new StringBuilder();
        sb.append("lock.").append(targetName).append(".").append(methodName);
        if(keys != null) {
            String keyStr = Joiner.on(".").skipNulls().join(keys);
            if(!StringUtils.isBlank(keyStr)) {
                LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
                String[] parameters =discoverer.getParameterNames(method);
                ExpressionParser parser = new SpelExpressionParser();
                Expression expression = parser.parseExpression(keyStr);
                EvaluationContext context = new StandardEvaluationContext();
                int length = parameters.length;
                if (length > 0) {
                    for (int i = 0; i < length; i++) {
                        context.setVariable(parameters[i], arguments[i]);
                    }
                }
                String keysValue = expression.getValue(context, String.class);
                sb.append("#").append(keysValue);
            }
        }
        return sb.toString();
    }
 
源代码8 项目: cuba   文件: AbstractBeansMetadata.java
protected List<MethodParameterInfo> getMethodParameters(Method method) {
    ArrayList<MethodParameterInfo> params = new ArrayList<>();

    Class<?>[] parameterTypes = method.getParameterTypes();

    LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
    String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);

    if (parameterTypes != null) {
        for (int i = 0; i < parameterTypes.length; i++) {
            String parameterName = parameterNames != null ? parameterNames[i] : "arg" + i;
            MethodParameterInfo parameterInfo = new MethodParameterInfo(parameterTypes[i].getName(), parameterName, null);
            params.add(parameterInfo);
        }
    }
    return params;
}
 
源代码9 项目: DimpleBlog   文件: VisitLogAspect.java
/**
 * 获取PageId
 *
 * @param joinPoint 切入点
 * @return PageId
 */
private Long getPageId(VLog vLog, JoinPoint joinPoint) throws NoSuchMethodException {
    String pageIdStr = vLog.pageId();
    if (StringUtils.isEmpty(pageIdStr)) {
        return null;
    }
    //get target method
    MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
    Method method = joinPoint.getTarget().getClass().getMethod(methodSignature.getMethod().getName(), methodSignature.getMethod().getParameterTypes());
    //express SpEL
    ExpressionParser expressionParser = new SpelExpressionParser();
    LocalVariableTableParameterNameDiscoverer localVariableTableParameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
    String[] params = localVariableTableParameterNameDiscoverer.getParameterNames(method);

    Object[] args = joinPoint.getArgs();
    EvaluationContext context = new StandardEvaluationContext();
    for (int i = 0; i < params.length; i++) {
        context.setVariable(params[i], args[i]);
    }

    Expression expression = expressionParser.parseExpression(pageIdStr);
    Object value = expression.getValue(context);

    if (value == null) {
        return null;
    }
    try {
        return (Long) value;
    } catch (Exception e) {
        log.error("get pageId error for parameters {}", value);
        return null;
    }
}
 
源代码10 项目: Shiro-Action   文件: OperationLogAspect.java
private void saveLog(ProceedingJoinPoint joinPoint, long time) {
    MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    Method method = signature.getMethod();

    SysLog sysLog = new SysLog();

    // 获取注解上的操作描述
    OperationLog operationLogAnnotation = method.getAnnotation(OperationLog.class);
    if (operationLogAnnotation != null) {
        sysLog.setOperation(operationLogAnnotation.value());
    }

    // 请求的方法名
    String className = joinPoint.getTarget().getClass().getName();
    String methodName = signature.getName();
    sysLog.setMethod(className + "." + methodName + "()");

    // 请求的方法参数
    Object[] args = joinPoint.getArgs();
    LocalVariableTableParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
    String[] paramNames = parameterNameDiscoverer.getParameterNames(method);
    if (args != null && paramNames != null) {
        StringBuilder params = new StringBuilder();
        for (int i = 0; i < args.length; i++) {
            params.append("  ").append(paramNames[i]).append(": ").append(args[i]);
        }
        sysLog.setParams(params.toString());
    }

    sysLog.setIp(IPUtils.getIpAddr());

    // 获取当前登录用户名
    if (SecurityUtils.getSubject().isAuthenticated()) {
        User user = ShiroUtil.getCurrentUser();
        sysLog.setUsername(user.getUsername());
    }

    sysLog.setTime((int) time);
    sysLogMapper.insert(sysLog);
}
 
源代码11 项目: FEBS-Security   文件: LogAspect.java
@Async
public void saveLog(ProceedingJoinPoint joinPoint, long time, String ip) throws IOException {
    Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    String principalJson = objectMapper.writeValueAsString(principal);
    JsonNode node = objectMapper.readTree(principalJson);
    String usrename = node.get("username").asText();
    MethodSignature signature = (MethodSignature) joinPoint.getSignature();
    Method method = signature.getMethod();
    SysLog log = new SysLog();
    Log logAnnotation = method.getAnnotation(Log.class);
    if (logAnnotation != null) {
        // 注解上的描述
        log.setOperation(logAnnotation.value());
    }
    // 请求的类名
    String className = joinPoint.getTarget().getClass().getName();
    // 请求的方法名
    String methodName = signature.getName();
    log.setMethod(className + "." + methodName + "()");
    // 请求的方法参数值
    Object[] args = joinPoint.getArgs();
    // 请求的方法参数名称
    LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
    String[] paramNames = u.getParameterNames(method);
    if (args != null && paramNames != null) {
        StringBuilder params = new StringBuilder();
        params = handleParams(params, args, Arrays.asList(paramNames));
        log.setParams(params.toString());
    }

    // 设置IP地址
    log.setIp(ip);
    log.setUsername(usrename);
    log.setTime(time);
    log.setCreateTime(new Date());
    log.setLocation(AddressUtils.getCityInfo(log.getIp()));
    // 保存系统日志
    this.logService.save(log);
}
 
源代码12 项目: SpringAll   文件: LogAspect.java
private void saveLog(ProceedingJoinPoint joinPoint, long time) {
	MethodSignature signature = (MethodSignature) joinPoint.getSignature();
	Method method = signature.getMethod();
	SysLog sysLog = new SysLog();
	Log logAnnotation = method.getAnnotation(Log.class);
	if (logAnnotation != null) {
		// 注解上的描述
		sysLog.setOperation(logAnnotation.value());
	}
	// 请求的方法名
	String className = joinPoint.getTarget().getClass().getName();
	String methodName = signature.getName();
	sysLog.setMethod(className + "." + methodName + "()");
	// 请求的方法参数值
	Object[] args = joinPoint.getArgs();
	// 请求的方法参数名称
	LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
	String[] paramNames = u.getParameterNames(method);
	if (args != null && paramNames != null) {
		String params = "";
		for (int i = 0; i < args.length; i++) {
			params += "  " + paramNames[i] + ": " + args[i];
		}
		sysLog.setParams(params);
	}
	// 获取request
	HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
	// 设置IP地址
	sysLog.setIp(IPUtils.getIpAddr(request));
	// 模拟一个用户名
	sysLog.setUsername("mrbird");
	sysLog.setTime((int) time);
	Date date = new Date();
	sysLog.setCreateTime(date);
	// 保存系统日志
	sysLogDao.saveSysLog(sysLog);
}
 
源代码13 项目: phone   文件: AopUtil.java
/**
 * 获取参数名列表
 * 
 * @param method
 * @return
 */
public static String[] getMethodParamNames(Method method) {
	// 获取被拦截方法参数名列表(使用Spring支持类库)
	LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
	String[] paraNameArr = u.getParameterNames(method);
	return paraNameArr;
}
 
源代码14 项目: phone   文件: AopUtil.java
/**
 * 获取参数名列表
 * 
 * @param method
 * @return
 */
public static String[] getMethodParamNames(Method method) {
	// 获取被拦截方法参数名列表(使用Spring支持类库)
	LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
	String[] paraNameArr = u.getParameterNames(method);
	return paraNameArr;
}
 
源代码15 项目: erp-framework   文件: LogAspect.java
@Async
    private void handleLog(final JoinPoint joinPoint, final Exception e, Object rvt) throws Exception{
        // 获得注解
        Method method = getMethod(joinPoint);
        Log log = getAnnotationLog(method);
        if (log == null) {
            return;
        }
        Date now = new Date();
        // 操作数据库日志表
        ErpLog erpLog = new ErpLog();
        erpLog.setErrorCode(0);
        erpLog.setIsDeleted(0);
        // 请求信息
        HttpServletRequest request = ToolUtil.getRequest();
        erpLog.setType(ToolUtil.isAjaxRequest(request) ? "Ajax请求" : "普通请求");
        erpLog.setTitle(log.value());
        erpLog.setHost(ToolUtil.getClientIp(request));
        erpLog.setUri(request.getRequestURI().toString());
//        erpLog.setHeader(request.getHeader(HttpHeaders.USER_AGENT));
        erpLog.setHttpMethod(request.getMethod());
        erpLog.setClassMethod(joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
        // 请求的方法参数值
        Object[] args = joinPoint.getArgs();
        // 请求的方法参数名称
        LocalVariableTableParameterNameDiscoverer u
                = new LocalVariableTableParameterNameDiscoverer();
        String[] paramNames = u.getParameterNames(method);
        if (args != null && paramNames != null) {
            StringBuilder params = new StringBuilder();
            params = handleParams(params, args, Arrays.asList(paramNames));
            erpLog.setParams(params.toString());
        }
        String retString = JsonUtil.bean2Json(rvt);
        erpLog.setResponseValue(retString.length() > 5000 ? JsonUtil.bean2Json("请求参数数据过长不与显示") : retString);
        if (e != null) {
            erpLog.setErrorCode(1);
            erpLog.setErrorMessage(e.getMessage());
        }
        Date stime = startTime.get();
        erpLog.setStartTime(stime);
        erpLog.setEndTime(now);
        erpLog.setExecuteTime(now.getTime() - stime.getTime());
        erpLog.setUsername(MySysUser.loginName());
        HashMap<String, String> browserMap = ToolUtil.getOsAndBrowserInfo(request);
        erpLog.setOperatingSystem(browserMap.get("os"));
        erpLog.setBrower(browserMap.get("browser"));
        erpLog.setId(IdUtil.simpleUUID());
        logService.insertSelective(erpLog);
    }
 
源代码16 项目: common-project   文件: MethodLockInterceptor.java
public String[] getParamterNames(Method method){
    LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
    return  u.getParameterNames(method);
}
 
源代码17 项目: onetwo   文件: SpringUtils.java
public static String[] getConstructorNames(Constructor<?> targetConstructor){
	LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
	return discoverer.getParameterNames(targetConstructor);
}