您好,登錄后才能下訂單哦!
本篇內容主要講解“如何使用Spring SpEL”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Spring SpEL”吧!
SpEL Spring表達式語言,在千人前面,根據不同用戶不同屬性匹配不同數據時很有用,以下簡單幾個實例顯示怎么使用。
import com.google.common.collect.Lists; import com.google.common.collect.Sets; 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.util.List; import java.util.Set; public class Test1 { // 用戶標簽列表 private List<Integer> userTagList; // 用戶手機號列表 private List<String> userMobileList; public void setUserTagList(List<Integer> userTagList) { this.userTagList = userTagList; } public void setUserMobileList(List<String> userMobileList) { this.userMobileList = userMobileList; } /** * 全部匹配 * 目標屬性 全部在 用戶屬性 中,返回true * * @param targetTags 目標屬性 * @return */ public boolean tagMatchAll(Integer... targetTags) { // 用戶標簽列表 Set<Integer> userSet = Sets.newHashSet(userTagList); // 目標屬性 Set<Integer> targetSet = Sets.newHashSet(targetTags); // 復制目標屬性,不能改變原有的屬性值 Set<Integer> targetSetCopy = Sets.newHashSet(targetSet); targetSetCopy.removeAll(userSet); return targetSetCopy.isEmpty(); } /** * 全部匹配 * * @param targetMobiles * @return */ public boolean mobileMatchAll(String... targetMobiles) { // 用戶標簽列表 Set<String> userSet = Sets.newHashSet(userMobileList); // 目標屬性 Set<String> targetSet = Sets.newHashSet(targetMobiles); // 復制目標屬性,不能改變原有的屬性值 Set<String> targetSetCopy = Sets.newHashSet(targetSet); targetSetCopy.retainAll(userSet); return !targetSetCopy.isEmpty(); } /** * 匹配到一個(交集不為空) 返回 true * * @param targetTags * @return */ public boolean tagMatchAny(Integer... targetTags) { // 用戶標簽列表 Set<Integer> userTagSet = Sets.newHashSet(userTagList); // 目標屬性 Set<Integer> targetSet = Sets.newHashSet(targetTags); // 復制目標屬性,不能改變原有的屬性值 Set<Integer> targetSetCopy = Sets.newHashSet(targetSet); targetSetCopy.retainAll(userTagSet); return !targetSetCopy.isEmpty(); } /** * 一個都沒有匹配到(交集為空) 返回 true * * @param targetTags * @return */ public boolean tagMatchNotAny(Integer... targetTags) { return !this.tagMatchAny(targetTags); } public static void test() { List<Integer> userTagList = Lists.newArrayList(10, 20, 30); List<String> userMobileList = Lists.newArrayList("188"); Test1 scene = new Test1(); scene.setUserTagList(userTagList); scene.setUserMobileList(userMobileList); StandardEvaluationContext context = new StandardEvaluationContext(); context.setVariable("scene", scene); ExpressionParser parser = new SpelExpressionParser(); // 全部匹配 String sceneCondition1 = "#scene.tagMatchAll(10, 20) && #scene.mobileMatchAll('188')"; Expression expression1 = parser.parseExpression(sceneCondition1); Boolean isTagMatchAll1 = expression1.getValue(context, Boolean.class); System.out.println("全部匹配1:" + isTagMatchAll1); // true String sceneCondition2 = "#scene.tagMatchAll(10, 20, 21)"; Expression expression2 = parser.parseExpression(sceneCondition2); Boolean isTagMatchAll2 = expression2.getValue(context, Boolean.class); System.out.println("全部匹配2:" + isTagMatchAll2); // false:userTagList 中沒有21 // 匹配任意一個 String sceneCondition3 = "#scene.tagMatchAny(10, 21, 31)"; Expression expression3 = parser.parseExpression(sceneCondition3); Boolean isTagMatchAny3 = expression3.getValue(context, Boolean.class); System.out.println("匹配任意一個:" + isTagMatchAny3); // true 匹配到 10 // 完全不匹配 String sceneCondition4 = "#scene.tagMatchNotAny(11, 21, 31)"; Expression expression4 = parser.parseExpression(sceneCondition4); Boolean isTagMatchNotAny4 = expression4.getValue(context, Boolean.class); System.out.println("完全不匹配:" + isTagMatchNotAny4); // true 匹配到 10 } public static void main(String[] args) { test(); } }
到此,相信大家對“如何使用Spring SpEL”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。