Spel

作者: setone | 来源:发表于2019-12-18 10:14 被阅读0次

前言:此文章主要解决你不能使用jdk8处理集合的情况还有一些模板的使用,使用字符串调用方法
1.模板替换

    @Test
    public void  test7()  {
        ExpressionParser parser = new SpelExpressionParser();
        EvaluationContext ctx = new StandardEvaluationContext();
        ctx.setVariable("date",new Date());
        ParserContext parserContext = new ParserContext() {
            @Override
            public boolean isTemplate() {
                return true;
            }
            @Override
            public String getExpressionPrefix() {
                return "{";
            }
            @Override
            public String getExpressionSuffix() {
                return "}";
            }
        };
        String template = "现在时间:    {#date}";
        Expression expression = parser.parseExpression(template, parserContext);
        log.info(expression.getValue(ctx,String.class));
    }

result:

[10:03:53][INFO ][AppTest][line:133]:现在时间:    Wed Dec 18 10:03:53 GMT+08:00 2019

2.操作集合

   @Test
    public void  test9()  {
         List<SpObject> primes = new ArrayList< >();
        primes.addAll(Arrays.asList(new SpObject(0,"000"),new SpObject(1,"111")));

         ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setVariable("primes",primes);
 
        List<SpObject> primesGreaterThanTen =
                 parser.parseExpression("#primes.?[#this.code>0]").getValue(context,List.class);
        log.info(primesGreaterThanTen.toString());
    }



    public static class SpObject{
        private int code;
        private String name;

        public SpObject(int code, String name) {
            this.code = code;
            this.name = name;
        }

        public int getCode() {
            return code;
        }

        public String getName() {
            return name;
        }

result:

[10:06:46][INFO ][AppTest][line:163]:[SpObject{code=1, name='111'}]
        @Test
    public void  test10()  {
         List<Map<String,Object>> primes = new ArrayList< >();
        for (int i = 0; i < 10; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("code",i);
            map.put("name",i+"");
            primes.add(map);
        }
         ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setVariable("primes",primes);

        List<Map<String,Object>> primesGreaterThanTen =
                 parser.parseExpression("#primes.?[#this[code]>5]").getValue(context,List.class);
        log.info(primesGreaterThanTen.toString());

        context.setVariable("list",primesGreaterThanTen);
        Map<String,Object> value = parser.parseExpression("#list.?[#this[code]>0][0]").getValue(context, Map.class);
        log.info(value.toString());

        context.setVariable("list",primesGreaterThanTen);
        List str = parser.parseExpression("#list.![#this[code]]").getValue(context, List.class);
        log.info(str.toString());
    }

result:

[10:28:59][INFO ][AppTest][line:180]:[{code=6, name=6}, {code=7, name=7}, {code=8, name=8}, {code=9, name=9}]
[10:28:59][INFO ][AppTest][line:184]:{code=6, name=6}
[10:28:59][INFO ][AppTest][line:188]:[6, 7, 8, 9]

相关文章

  • 基于SpEL实现springboot 集成mongo动态集合存储

    SpEL概念 SpEL全称为“Spring Expression Language”,简写为“SpEL”,Spri...

  • 如何通过aop+spel表达式玩转出不一样的切面实现

    前言 在介绍正文前,我们先来讲下spel 什么是spel Spring表达式语言(简称“ SpEL”)是一种功能强...

  • Java使用SpEL

    什么是SpEL SpEL(Spring Expression Language),即Spring表达式语言。它与J...

  • Spring 表达式语言SpEL

    1、SpEL概述 Spring Expression Language(SpEL)是一种强大的表达式语言,支持在运...

  • Spring 通过 SpEL 为 bean 赋值

    SpEL 字面量的表示 整数: 小数: 科学计数法: 字符串: 或 Boolean: SpEL 引用 Bean、属...

  • SpEL

  • Spel

    前言:此文章主要解决你不能使用jdk8处理集合的情况还有一些模板的使用,使用字符串调用方法1.模板替换 resul...

  • SpEL

    Spring 表达式语言 (SpEL):支持运行时查询和操作对象1图的强大的表达式语言; 其语法类似 EL : S...

  • SpEL

    Spring表达式语言(SpEL),它的特性包括: 使用bean的ID来引用bean. 调用方法和访问对象的属性。...

  • SpEL表达式注入漏洞

    一、什么是SpEL 表达式 Spring Expression Language(简称 SpEL)是一种功能强大的...

网友评论

      本文标题:Spel

      本文链接:https://www.haomeiwen.com/subject/jvmynctx.html