mirror of
https://github.com/zongzibinbin/MallChat.git
synced 2026-03-13 21:53:41 +08:00
add FrequencyControl
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package com.abin.mallchat.common;
|
||||
|
||||
public interface FrequencyControlConstant {
|
||||
|
||||
String TOTAL_COUNT_WITH_IN_FIX_TIME_FREQUENCY_CONTROLLER = "TotalCountWithInFixTime";
|
||||
|
||||
String SLIDING_WINDOW_FREQUENCY_CONTROLLER = "SlidingWindow";
|
||||
|
||||
String TOKEN_BUCKET_FREQUENCY_CONTROLLER = "TokenBucket";
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,30 @@
|
||||
package com.abin.mallchat.utils;
|
||||
|
||||
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||
import org.springframework.expression.EvaluationContext;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.ExpressionParser;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Optional;
|
||||
|
||||
public class SpElUtils {
|
||||
private static final ExpressionParser parser = new SpelExpressionParser();
|
||||
private static final DefaultParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
|
||||
|
||||
public static String parseSpEl(Method method, Object[] args, String spEl) {
|
||||
String[] params = Optional.ofNullable(parameterNameDiscoverer.getParameterNames(method)).orElse(new String[]{});//解析参数名
|
||||
EvaluationContext context = new StandardEvaluationContext();//el解析需要的上下文对象
|
||||
for (int i = 0; i < params.length; i++) {
|
||||
context.setVariable(params[i], args[i]);//所有参数都作为原材料扔进去
|
||||
}
|
||||
Expression expression = parser.parseExpression(spEl);
|
||||
return expression.getValue(context, String.class);
|
||||
}
|
||||
|
||||
public static String getMethodKey(Method method) {
|
||||
return method.getDeclaringClass() + "#" + method.getName();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user