Spring Boot如何编写SpEL表达式拼接变量并将结果转为全小写
实现方案
SpEL支持直接调用Java String类的公共方法,你只需要把原有拼接逻辑作为整体包裹,再调用toLowerCase()方法即可,修改后的代码如下:
@Cacheable( key="(#name+'::'+#age+'::'+#country).toLowerCase()" ) public User validate(String name, String age, String country) { // 业务逻辑 }
注意点
- 包裹拼接逻辑的括号不能省略:如果不加括号,
toLowerCase()只会作用在最后一个#country参数上,name和age中的大写字母不会被转换 - 该写法不会修改数字、分隔符
::等非字母内容,仅会把所有大写英文字母转为小写 - 另一种等效写法是给每个参数单独调用转小写方法后再拼接:
#name.toLowerCase()+'::'+#age.toLowerCase()+'::'+#country.toLowerCase(),但这种写法冗余度高,后续新增参数需要重复加转小写逻辑,不推荐使用
效果验证
传入参数"John","24","USA"时,表达式先拼接得到John::24::USA,转小写后最终缓存key为john::24::usa,和预期结果一致。
内容的提问来源于stack exchange,提问作者theprogrammer
相关产品推荐
相关产品推荐

