Spring表达式语言(SpEL)是一种强大的表达式语言,它可以用来在运行时创建、配置和操作对象。它可以用来检索和操作对象的属性,执行方法调用,创建新对象,使用内置函数或者使用任何其他的 Java 表达式语法。
Spring表达式语言是一个功能强大的表达式语言,它可以在运行时创建、配置和操作对象。它可以用来检索和操作对象的属性,执行方法调用,创建新对象,使用内置函数或者使用任何其他的 Java 表达式语法。
String expression = "T(java.lang.Math).random() * 100.0"; double value = parser.parseExpression(expression).getValue(Double.class); System.out.println("Random value is : " + value);
Spring SpEL 支持多种数字标量类型(如 int、long 和 double 等)、字符串、布尔值、null 和正则表达式。此外,它还支持集合、数组、Map 和其他 JavaBean 的特性。SpEL 还可以通过使用内部函数来扩充其功能。例如:
String expression = "T(java.lang.Math).abs(-100)"; int value = parser.parseExpression(expression).getValue(Integer.class); System.out.println("Absolute value is : " + value);
Spring SpEL 支持多个运算符来扩充其功能。例如“+”、“-”、“*”、“/” 等常用运算符都可以在 Spring SpEL 中使用。此外 Spring SpEL 还有一些特有的运算符如 “? : ” (三目运算符) 和 “#this ? .methodName() : null ” (Elvis 运算符 ) 等。
数据库属性文件...
bean.property_name
在下面的代码中,我们从“addressBean"注入了“country"属性的值,bean into“customer"class“country"属性。
public class Server { @Value("#{addressBean.country}") private String country; ... }
以下代码定义了一个Address bean,并用Spring表达式语言标记该bean。
它用字符串值填充街道,用int值填充邮政编码。 它还定义了一个实用方法 getFullAddress
返回邮政编码,街道,和国家。
package com.java2s.core; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("addressBean") public class Address { @Value("Main Street, New York") private String street; @Value("123456") private int postcode; @Value("US") private String country; public String getFullAddress(String prefix) { return prefix + " : " + street + " " + postcode + " " + country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "Address [street=" + street + ", postcode=" + postcode + ", country=" + country + "]"; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public int getPostcode() { return postcode; } public void setPostcode(int postcode) { this.postcode = postcode; } public String getCountry() { return country; } }
以下代码使用Address Java bean中定义的值来填充服务器bean中的属性。
在Spring Expression语言中,我们还可以从bean调用该方法。
package com.java2s.core; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("myServer") public class Server { @Value("#{addressBean}") private Address address; @Value("#{addressBean.country}") private String country; @Value("#{addressBean.getFullAddress("java2s")}") private String fullAddress; @Override public String toString() { return "Server [address=" + address + "n, country=" + country + "n, fullAddress=" + fullAddress + "]"; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getFullAddress() { return fullAddress; } public void setFullAddress(String fullAddress) { this.fullAddress = fullAddress; } }
以下代码显示如何在xml文件配置中填充相同的数据。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="myServer" class="com.java2s.core.Server"> <property name="address" value="#{addressBean}" /> <property name="country" value="#{addressBean.country}" /> <property name="fullAddress" value="#{addressBean.getFullAddress("java2s")}" /> </bean> <bean id="addressBean" class="com.java2s.core.Address"> <property name="street" value="Main Street, New York" /> <property name="postcode" value="123456" /> <property name="country" value="US" /> </bean> </beans>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="myServer" class="com.java2s.core.Server"> </bean> </beans>
以下代码显示了如何运行上面的代码。
package com.java2s.core; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml"); Server obj = (Server) context.getBean("myServer"); System.out.println(obj); } }
下面的代码显示了如何在Spring Expression Language中调用没有参数的方法。
首先,我们使用返回double值的方法定义一个Java bean。
package com.java2s.core; import org.springframework.stereotype.Component; @Component("priceBean") public class Price { public double getSpecialPrice() { return new Double(99.99); } }
在下面的代码中,我们调用上面在Spring表达式语言中定义的方法。
@Value("#{priceBean.getSpecialPrice()}") private double amount;
我们也可以在String字面量上调用“toUpperCase()"方法。
@Value("#{"java2s".toUpperCase()}") private String name;
完整的源代码
package com.java2s.core; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component("myServer") public class Server { @Value("#{"java2s".toUpperCase()}") private String name; @Value("#{priceBean.getSpecialPrice()}") private double amount; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getAmount() { return amount; } public void setAmount(double amount) { this.amount = amount; } @Override public String toString() { return "Server [name=" + name + ", amount=" + amount + "]"; } }
下面的代码显示了如何在bean定义XML文件中重写上面的代码。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="myServer" class="com.java2s.core.Server"> <property name="name" value="#{"java2s".toUpperCase()}" /> <property name="amount" value="#{priceBean.getSpecialPrice()}" /> </bean> <bean id="priceBean" class="com.java2s.core.Price" /> </beans>
Spring JSR-250 注释Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。因为你已经有了...
c:param 标签 c:param标签用于在c:url标签中指定参数,而且与URL编码相关。在c:param标签内,name属性表明参数的名称,value属性...
fmt:setLocale 标签 fmt:setLocale标签用来将给定的区域存储在locale配置变量中。语法格式fmt:setLocale value=string variant=s...
fn:length()函数 fn:length()函数返回字符串长度或集合中元素的数量。语法 fn:length()函数的语法如下:${fn:length(collection ...
Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器。Servlet容器主要负责管...
编写过滤器Servlet 过滤器是Java 类,可用于 Servlet 编程中的下述目的:在它们访问后端资源之前,拦截这些来自客户端的请求。在...
Swift教程 -Swift范围操作符您可以使用范围运算符来指定整数范围,例如1到10。有两种类型的范围运算符:闭合范围运算符 ... 和半...
Swift教程 -Swift数字Swift数字有自己的数据类型。在Swift中,一些数字数据类型可以存储大于的数字其他。具有小数部分的数字会有...