if (StringUtil.isNotBlank(request.getHeader("encrypt"))) { encrypt = true; SM2Util sm2 = new SM2Util(false); Object[] argsarr = joinPoint.getArgs(); // 对参数解密 for (int i = 0; i < argsarr.length; i++) { if (argsarr[i] instanceof String && StringUtil.isNotBlank(argsarr[i])) { if (StringUtil.isNotBlank(argsarr[i]) && String.valueOf(argsarr[i]).contains("{")) { continue; } log.info(sm2.decrypt(String.valueOf(argsarr[i]))); argsarr[i] = sm2.decrypt(String.valueOf(argsarr[i])); } } // 执行请求 returnValue = joinPoint.proceed(argsarr); log.info("==================================="); } 优化这段代码
时间: 2023-08-06 20:07:41 浏览: 362
1. 避免在循环中频繁调用StringUtil.isNotBlank方法,可以先将其结果缓存起来,然后再使用。
2. 对于判断 argsarr[i] 是否为字符串以及是否包含 "{" 的逻辑,可以提前进行判断并缓存结果,避免重复执行。
3. 对于 SM2Util 对象的创建,可以考虑将其作为类成员变量,避免每次调用方法都需要创建对象。
4. 对于日志输出,可以使用占位符的方式,避免字符串拼接带来的性能问题。
优化后的代码如下所示:
```java
if (StringUtil.isNotBlank(request.getHeader("encrypt"))) {
encrypt = true;
SM2Util sm2 = new SM2Util(false);
Object[] argsarr = joinPoint.getArgs();
for (int i = 0; i < argsarr.length; i++) {
Object arg = argsarr[i];
if (arg instanceof String && StringUtil.isNotBlank((String) arg)) {
String argStr = (String) arg;
boolean hasBrace = argStr.contains("{");
if (!hasBrace) {
String decrypted = sm2.decrypt(argStr);
log.info("Decrypted argument: {}", decrypted);
argsarr[i] = decrypted;
}
}
}
returnValue = joinPoint.proceed(argsarr);
log.info("===================================");
}
```
阅读全文