• SpEL表达式


    春节在家躲避流感,闲来无事看看spring文档打发时间。总结了spring中SpEL表达式的各种骚写法,其实还有几个,确实看不明白怎么用。代码片段环境为springboot,建议将代码复制到项目里运行能看出效果哦。

    package com.datang.springcode.el;/*
     * @auther 顶风少年
     * @mail dfsn19970313@foxmail.com
     * @date 2020-01-22 22:19
     * @notify
     * @version 1.0
     */
    
    import org.springframework.stereotype.Component;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Component
    public class Bean1 {
    
        public String name = "张三";
        public List<String> hobby = new ArrayList<>();
        public String[] honey = {"小红", "小兰"};
        public Map<String,Integer> grade = new HashMap<>();
        public String nullN = null;
        public List<Bean2> bean2s=new ArrayList<>();
    
        public Bean1() {
            hobby.add("篮球");
            hobby.add("足球");
            hobby.add("乒乓球");
            grade.put("语文",100);
            grade.put("数学",99);
            bean2s.add(new Bean2("张三"));
            bean2s.add(new Bean2("莉莉丝"));
            bean2s.add(new Bean2("汪汪五"));
        }
    
        public int getAge(){
            return 100;
        }
    }
    View Code
    package com.datang.springcode.el;/*
    * @auther 顶风少年 
    * @mail dfsn19970313@foxmail.com
    * @date 2020-01-23 15:27
    * @notify 
    * @version 1.0
    */
    public class Bean2 {
        public String name;
    
        public Bean2(String name) {
            this.name = name;
        }
    }
    View Code
    package com.datang.springcode.el;/*
     * @auther 顶风少年
     * @mail dfsn19970313@foxmail.com
     * @date 2020-01-22 21:40
     * @notify
     * @version 1.0
     */
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    import java.util.List;
    import java.util.Map;
    
    @Component
    public class ElBean {
        //注入Boolean
        @Value("true")
        private boolean booleanType;
    
        //注入short
        @Value("123")
        private Short shortType;
    
        //注入double
        @Value("12.33")
        private Double doubleType;
    
        //注入字符串
        @Value("ddd")
        private String stringType;
    
        /*
        取的bean的属性,该bean的属性必须是public或者有get()方法。
        */
    
        //也可以注入bean
        @Value("#{@bean1}")
        private Bean1 bean2;
    
        //取bean的属性
        @Value("#{bean1.name}")
        private String name;
    
        //bean的属性是数组
        @Value("#{bean1.honey[0]}")
        private String honey;
    
        //bean的属性是集合
        @Value("#{bean1.hobby[1]}")
        private String hobby;
    
        //bean的属性是map,根据key取value
        @Value("#{bean1.grade['数学']}")
        private int grade;
    
        //创建数组
        @Value("#{new int[]{1,2,3}}")
        private int[] phoneCode;
    
        //调用bean的方法
        @Value("#{bean1.getAge()}")
        private int age;
    
        //关系运算符 等于,不等于,小于,小于或等于,大于和大于或等于
        @Value("#{1==1}")
        private boolean booleanType2;
    
        //逻辑运算符 && || !
        @Value("#{ !true }")
        private boolean booleanType3;
    
        //算数运算符 + - * / % ^
        @Value("#{2^2}")
        private int intType1;
    
        //new 对象,注意必须是全限定类名
        @Value("#{new com.datang.springcode.el.Bean1()}")
        private Bean1 bean1;
    
        //三元表达式
        @Value("#{bean1.getAge()>2?bean1.getAge():2}")
        private Integer intType2;
    
        //判断属性是否为null的三元表达式可以简化,但是如果该属性不存在报错。
        @Value("#{bean1.nullN?:'张三三'}")
        private String intType3;
    
        //对map的value筛选
        @Value("#{bean1.grade.?[value>99]}")
        private Map<String,String> map;
    
        //bean的集合中是一个对象,取每个对象的属性
        @Value("#{bean1.bean2s.![name]}")
        private List<String> names;
    
    
    }
    View Code
     @Test
        public void t4(){
            AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringcodeApplication.class);
            ElBean bean = applicationContext.getBean(ElBean.class);
            System.out.println(bean);
        }
    View Code

    新年快乐!

  • 相关阅读:
    Oracle Flashback Technologies (总)
    Oracle Flashback Technologies
    Oracle Flashback Technologies
    Oracle Flashback Technologies
    Oracle Flashback Technologies
    CDB中plug PDB
    PDB重命名
    Redo丢失场景和处理方法
    mkisofs简单定制linux iso
    zabbix 监控tomcat实例
  • 原文地址:https://www.cnblogs.com/zumengjie/p/12230698.html
Copyright © 2020-2023  润新知