key 定义在注解上,支持SPEL表达式

key 定义在注解上,支持SPEL表达式

1.核心方法
    /**
    * 获取缓存的key
    * key 定义在注解上,支持SPEL表达式
    *
    * @author
    * @date
    * @param key
    * @param method
    * @param args
    * @return Object
    */
  private Object 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);
  }

 

posted @ 2022-04-19 11:39  java架构师1  阅读(127)  评论(0)    收藏  举报