记录一下java中怎么执行字符串中的代码块:
1、需要引入jar包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jexl3</artifactId>
<version>3.1</version>
</dependency>
2、通用代码块提供代码执行功能
private static JexlEngine jexlEngine = new Engine();
public static Object executeExpression(String jexlExpression, Map<String, Object> map) {
JexlExpression expression = jexlEngine.createExpression(jexlExpression);
JexlContext context = new MapContext();
if (map!=null&&!map.isEmpty()) {
map.forEach(context::set);
}
return expression.evaluate(context);
}
3、调用代码块
Map<String, Object> map = new HashMap<>();
map.put("newDate", new Date());//变量需要通过map注入
map.put("OAUtils", new OAUtils());//类方法需要map注入
String expression = "OAUtils.getMonthEnd(newDate)";
Object bb = executeExpression(expression, map);
本文介绍了如何在Java中使用Apache Commons Jexl库来执行字符串中的代码块。首先,需要在项目中引入commons-jexl3的依赖。然后,创建`JexlEngine`实例,并定义一个通用方法`executeExpression`,该方法接受一个表达式字符串和一个变量映射,将表达式中的变量替换为映射中的值并执行。最后,通过实例化一个`Map`,注入需要的变量和类方法,调用`executeExpression`执行代码块。

被折叠的 条评论
为什么被折叠?



