栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpEL小试牛刀

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpEL小试牛刀

背景

SpEL(Spring expression Language),即Spring表达式语言,语言简洁,功能强大。

示例
private static final Cache expression_CACHE = CacheBuilder.newBuilder()
		.maximumSize(8192)
		.initialCapacity(512)
		.expireAfterWrite(1L, TimeUnit.HOURS)
		.build();

	private static final expressionParser SPEL_PARSER = new SpelexpressionParser();

public static String parse(String expression, Map param) {
	return parse(expression, String.class, param);
}

public static  T parse(String expression, Class clazz, Map param) {
	try {
		expression e = expression_CACHE.get(expression, () -> SPEL_PARSER.parseexpression(expression));
		evaluationContext context = new StandardevaluationContext();
		for (Map.Entry entry : param.entrySet()) {
			context.setVariable(entry.getKey(), entry.getValue());
		}
		return e.getValue(context, clazz);
	} catch (ExecutionException e) {
		throw new RuntimeException(e);
	}
}
常见用法
  • 字符常量
// error
String exp = "Const"

// OK
String exp = "'CityList'"  
  • 属性变量
String exp = "#cityCode"
  • 字符拼接

字符串连接符:+

String exp = "'PRE'+#cityCode+'SUFF'"

String exp = "#cityCode + ':'+ #type"
  • 嵌套对象属性
String exp = "#city.code"

String exp = "#city.code+'PRE'+#city.type+#code+'SUFF'"

注意

  • 属性为 null会转化为 “null” 字符串
  • 嵌套对象外层不能为null,否则抛 SpelevaluationException 异常
  • 嵌套对象外层非null,最后一层引用属性为null 则会转化为 "null"字符串
Reference
  • https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions
  • https://www.jianshu.com/p/e0b50053b5d3
  • https://www.jianshu.com/p/27fd3754bb9c
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号