zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然轻量级JAVA EE企业应用开发Struts2Sping4Hibernate整合开发学习笔记:Spring_Expression

    <?xml version="1.0" encoding="GBK"?>
    <project name="spring" basedir="." default="">
        <property name="src" value="src"/>
        <property name="dest" value="classes"/>
    
        <path id="classpath">
            <fileset dir="../../lib">
                <include name="**/*.jar"/>
            </fileset>
            <pathelement path="${dest}"/>
        </path>
    
        <target name="compile" description="Compile all source code">
            <delete dir="${dest}"/>
            <mkdir dir="${dest}"/>
            <copy todir="${dest}">
                <fileset dir="${src}">
                    <exclude name="**/*.java"/>
                </fileset>        
            </copy>
            <javac destdir="${dest}" debug="true" includeantruntime="yes"
                deprecation="false" optimize="false" failonerror="true">
                <src path="${src}"/>
                <classpath refid="classpath"/>
                <compilerarg value="-Xlint:deprecation"/>
            </javac>
        </target>
    
        <target name="run" description="Run the main class" depends="compile">
            <java classname="lee.SpELTest" fork="yes" failonerror="true">
                <classpath refid="classpath"/>
            </java>
        </target>
    
    </project>
    package lee;
    
    import org.springframework.expression.*;
    import org.springframework.expression.spel.standard.*;
    import org.springframework.expression.spel.support.*;
    
    import java.util.*;
    
    import org.crazyit.app.domain.*;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class SpELTest
    {
        public static void main(String[] args)
        {
            // 创建一个ExpressionParser对象,用于解析表达式
            ExpressionParser parser = new SpelExpressionParser();
            // 最简单的字符串表达式
            Expression exp = parser.parseExpression("'HelloWorld'");
            System.out.println("'HelloWorld'的结果: " + exp.getValue());
            // 调用方法的表达式
            exp = parser.parseExpression("'HelloWorld'.concat('!')");
            System.out.println("'HelloWorld'.concat('!')的结果: "
                + exp.getValue());
            // 调用对象的getter方法
            exp = parser.parseExpression("'HelloWorld'.bytes");
            System.out.println("'HelloWorld'.bytes的结果: "
                + exp.getValue());
            // 访问对象的属性(d相当于HelloWorld.getBytes().length)
            exp = parser.parseExpression("'HelloWorld'.bytes.length");
            System.out.println("'HelloWorld'.bytes.length的结果:"
                + exp.getValue());
            // 使用构造器来创建对象
            exp = parser.parseExpression("new String('helloworld')"
                + ".toUpperCase()");
            System.out.println("new String('helloworld')"
                + ".toUpperCase()的结果是: "
                + exp.getValue(String.class));
            Person person = new Person(1 , "孙悟空", new Date());
            exp = parser.parseExpression("name");
            // 以指定对象作为root来计算表达式的值
            // 相当于调用person.name表达式的值
            System.out.println("以persn为root,name表达式的值是: "
                + exp.getValue(person , String.class));
            exp = parser.parseExpression("name=='孙悟空'");
            StandardEvaluationContext ctx = new StandardEvaluationContext();
            // 将person设为Context的root对象
            ctx.setRootObject(person);
            // 以指定Context来计算表达式的值
            System.out.println(exp.getValue(ctx , Boolean.class));
            List<Boolean> list = new ArrayList<Boolean>();
            list.add(true);
            EvaluationContext ctx2 = new StandardEvaluationContext();
            // 将list设置成EvaluationContext的一个变量
            ctx2.setVariable("list" , list);
            // 修改list变量的第一个元素的值
            parser.parseExpression("#list[0]").setValue(ctx2 , "false");
            // list集合的第一个元素被改变
            System.out.println("list集合的第一个元素为:"
                + parser.parseExpression("#list[0]").getValue(ctx2));
    
        }
    }
    package org.crazyit.app.domain;
    
    import java.util.Date;
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
     * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @version  1.0
     */
    public class Person
    {
        private Integer id;
        private String name;
        private Date birth;
    
        // 无参数的构造器
        public Person()
        {
        }
        // 初始化全部成员变量的构造器
        public Person(Integer id , String name , Date birth)
        {
            this.id = id;
            this.name = name;
            this.birth = birth;
        }
    
        // id的setter和getter方法
        public void setId(Integer id)
        {
            this.id = id;
        }
        public Integer getId()
        {
            return this.id;
        }
    
        // name的setter和getter方法
        public void setName(String name)
        {
            this.name = name;
        }
        public String getName()
        {
            return this.name;
        }
    
        // birth的setter和getter方法
        public void setBirth(Date birth)
        {
            this.birth = birth;
        }
        public Date getBirth()
        {
            return this.birth;
        }
    }
  • 相关阅读:
    ThreadPoolExecutor的corePoolSize、maximumPoolSize和poolSize
    ThreadPoolExecutor线程池的一个面试题
    SpringBoot 集成Jedis操作set
    死磕JVM之类中各部分的加载顺序
    ThreadLocal为什么会内存泄漏
    有趣的RPC理解
    MQ如何解决消息的顺序性
    Collections.sort排序
    对象的内存分析
    类与对象的分析
  • 原文地址:https://www.cnblogs.com/tszr/p/12371997.html
Copyright © 2011-2022 走看看