91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Spring SpEL

發布時間:2021-10-14 09:42:59 來源:億速云 閱讀:171 作者:iii 欄目:編程語言

本篇內容主要講解“如何使用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”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马山县| 乌鲁木齐县| 陵水| 正蓝旗| 固阳县| 三都| 黄冈市| 颍上县| 建德市| 温泉县| 永修县| 山东| 茶陵县| 横山县| 山东省| 清涧县| 阳原县| 瑞安市| 胶州市| 蕉岭县| 四川省| 临高县| 武隆县| 南雄市| 衡阳市| 七台河市| 柳林县| 杭锦旗| 阿克苏市| 海原县| 琼海市| 巴彦县| 静宁县| 安福县| 新源县| 宝丰县| 哈巴河县| 民权县| 周至县| 红安县| 永胜县|