SPEL 详细说明:
http://docs.spring.io/spring/docs/4.3.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#expressions
例子:
Address.java
package com.spring.spel; public class Address { private String city; private String street; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } @Override public String toString() { return "Address [city=" + city + ", street=" + street + "]"; } }
Car.java
package com.spring.spel; public class Car { private String brand; private double price; private double tyrePerimeter; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public double getTyrePerimeter() { return tyrePerimeter; } public void setTyrePerimeter(double tyrePerimeter) { this.tyrePerimeter = tyrePerimeter; } @Override public String toString() { return "Car [brand=" + brand + ", price=" + price + ", tyrePerimeter=" + tyrePerimeter + "]"; } }
Person.java
package com.spring.spel; public class Person { private String name; private Car car; //引用ddress bean的city属性 private String city; //根据car的price 确定info: car的price > 300000 private String info; public String getName() { return name; } public void setName(String name) { this.name = name; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public String toString() { return "Person [name=" + name + ", car=" + car + ", city=" + city + ", info=" + info + "]"; } }
XML配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 使用SpEL 来为属性赋值 --> <bean id="address" class="com.spring.spel.Address" p:city="#{'SH'}" p:street="lianHangRoad" /> <!-- 使用SpEL 来引用类的静态属性 --> <bean id="car" class="com.spring.spel.Car" p:brand="AUDI" p:price="#{200000}" p:tyrePerimeter="#{T(java.lang.Math).PI*2*80}" > </bean> <!-- 1. 使用SpEL 来应用其他Bean的属性—>p:city. 2. 使用SpEL 来应用其他Bean->p:car 3. 使用SpEL 运算算术符 --> <bean id="person" class="com.spring.spel.Person" p:city="#{address.city}" p:car="#{car}" p:name="#{'Matt'}" p:info="#{car.price > 300000 ? '白领' : '蓝领'}" /> </beans>
Main.java
package com.spring.spel; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext ext = new ClassPathXmlApplicationContext("spEL.xml"); Address address = (Address) ext.getBean("address"); System.out.println(address); Car car = (Car) ext.getBean("car"); System.out.println(car); Person person = (Person) ext.getBean("person"); System.out.println(person); } }
运行结果:
Address [city=SH, street=lianHangRoad] Car [brand=AUDI, price=200000.0, tyrePerimeter=502.6548245743669] Person [name=Matt, car=Car [brand=AUDI, price=200000.0, tyrePerimeter=502.6548245743669], city=SH, info=蓝领]
相关推荐
spring spEL 表达式详解 运行环境:eclipse 构建工具:maven 不提供maven构建,maven用来解决jar包的依赖
Spring_SpEl表达式使用用例 只是一个简单的demo,有需要的可以看看
主要介绍了Spring spel表达式使用方法示例,通过一些实例向大家展示了spel表达式的用法,需要的朋友可以了解下。
今天小编就为大家分享一篇关于Spring组件开发模式支持SPEL表达式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
用于Spring Cloud Function SPEL表达式注入漏洞测试环境搭建,是编译好的服务端程序,命令号java -jar *.jar运行即可,服务端运行在127.0.0.1:8080端口
Spring Cloud Gateway Actuator API SpEL表达式注入命令执行 0day 漏洞复现
SpringBoot 自定义注解,属性支持SPEL表达式。介绍了SPEL表达式的解析
Spring Expression Language (SpEL)中文文档。基于Spring4.x。
主要介绍了Spring实战之Bean定义中的SpEL表达式语言支持操作,结合实例形式分析了Bean定义中的SpEL表达式语言操作步骤与实现技巧,需要的朋友可以参考下
Spring Spel表达式,使用静态工厂创建Bean,调用实例工厂创建Bean,组件装配
一、创建Spring Boot应用 二、SpEL结合@Value注解读取配置文件属性 三、SpEL结合 @Value注解读取系统环境变量 四、配置文件的占位符
主要介绍了spring表达式语言SpEL用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
个人资源分享整理博客:http://blog.csdn.net/fanxiaobin577328725/article/details/51894331 (将上传的图书,随书代码,以及先前分部分上传的资源进行了整理,可以看做一个目录,出于分享的目的,供大家免费下载)
基于SpringBoot、Spring表达式语言 (SpEL)、annotation的操作日志 ### 简介 * 使用annotation来标注方法,标记操作内容 * 使用SpEL来动态生成操作日志内容,使操作日志记录更加详细(记录操作内容ID等关键信息) * ...
opt-log基于SpringBoot、Spring表达式语言 (SpEL)、annotation的操作日志简介使用annotation来标注方法,标记操作内容使用SpEL来动态生成操作日志内容,使操作日志记录更加详细(记录操作内容ID等关键信息)同一个...
内容包括整体认识JPA、JPA基础查询方法、定义查询方法、注解式查询方法、@Entity实例里面常用注解详解、JpaRepository扩展详解、JPA的MVC扩展REST支持、DataSource的配置、乐观锁、SpEL表达式在SpringData里面的应用...
Spring框架中的spring-messaging模块提供了一种基于WebSocket的STOMP协议实现,STOMP消息代理在处理客户端消息时存在SpEL表达式注入漏洞,因此攻击者可以通过构造恶意的消息来实现远程代码执行。 Windows平台...
Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...
Spring 3.0中,新的表达式语言名叫Spring Expression Language(SpEL,直译就是Spring表达式语言)。Shaun将其描述为“嵌入在Spring编程模型上的,可以用来在Spring项目之间描述任务以及配置的微型脚本语言。SpEL...