Master Spring & Java Development!
Subscribe to Ram N Java for clean, beginner-friendly coding guides!
🔔 Subscribe to Ram N JavaOverview: Relational Operators in SpEL via XML
The Spring Expression Language (SpEL) allows you to evaluate relational and comparison expressions directly inside your Spring XML configuration files. By evaluating these conditions during bean configuration, you can inject evaluated boolean flags into your bean properties without writing additional logic in Java.
In this guide, you will learn how to write relational comparisons using both textual aliases and operators within an XML-based bean configuration.
Supported Relational Operators in XML
Because symbols like < and > have special meaning in XML, SpEL provides text-based equivalent aliases to avoid XML parsing and escaping issues:
-
Equal (
==/eq): Tests equality between two values or properties:value="#{100 eq 100}". -
Not Equal (
!=/ne): Checks whether two values are distinct:value="#{100 ne 200}". -
Less Than (
lt): Replaces<cleanly in XML:value="#{10 lt 20}". -
Less Than or Equal (
le): Replaces<=in XML:value="#{10 le 20}". -
Greater Than (
gt): Replaces>cleanly in XML:value="#{20 gt 10}". -
Greater Than or Equal (
ge): Replaces>=in XML:value="#{20 ge 20}".
Configuring Comparisons in XML
To configure comparison expressions inside your Spring bean XML definition:
-
Identify Property: Define your bean and target
booleanproperty name. -
Set Value Expression: Supply the relational expression within the
valueattribute using text aliases:
<property name="isEligible" value="#{personBean.age ge 18}" /> - Container Initialization: Spring resolves the condition upon loading the application context and sets the boolean flag automatically.
Recommended Next Videos from Ram N Java
Click here to watch on Youtube:
https://www.youtube.com/watch?v=2HcEA0E_SiU&list=UUhwKlOVR041tngjerWxVccw
Click the below Image to Enlarge:
| Relational operators in Spring Expression Language SpEL [XML] | Spring Tutorial |
| Relational operators in Spring Expression Language SpEL [XML] | Spring Tutorial |
| Relational operators in Spring Expression Language SpEL [XML] | Spring Tutorial |
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0%20http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ram.core</groupId>
<artifactId>SpringDemo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringDemo</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring 5 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
MedicalInsurence.java
public class MedicalInsurence
{
private int insurencePolicyNumber;
private int insuredAmount;
public int getInsurencePolicyNumber()
{
return insurencePolicyNumber;
}
public void setInsurencePolicyNumber(int insurencePolicyNumber)
{
this.insurencePolicyNumber = insurencePolicyNumber;
}
public int getInsuredAmount()
{
return insuredAmount;
}
public void setInsuredAmount(int insuredAmount)
{
this.insuredAmount = insuredAmount;
}
}
Employee.java
public class Employee
{
private int id;
private String name;
private boolean insuredAmountEqualTo10000;
private boolean insuredAmountNotEqualTo10000;
private boolean insuredAmountLessThan10000;
private boolean insuredAmountLessThanOrEqualTo10000;
private boolean insuredAmountGreaterThan10000;
private boolean insuredAmountGreaterThanOrEqualTo10000;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public boolean isInsuredAmountEqualTo10000()
{
return insuredAmountEqualTo10000;
}
public void setInsuredAmountEqualTo10000(boolean insuredAmountEqualTo10000)
{
this.insuredAmountEqualTo10000 = insuredAmountEqualTo10000;
}
public boolean isInsuredAmountNotEqualTo10000()
{
return insuredAmountNotEqualTo10000;
}
public void setInsuredAmountNotEqualTo10000(
boolean insuredAmountNotEqualTo10000)
{
this.insuredAmountNotEqualTo10000 = insuredAmountNotEqualTo10000;
}
public boolean isInsuredAmountLessThan10000()
{
return insuredAmountLessThan10000;
}
public void setInsuredAmountLessThan10000(
boolean insuredAmountLessThan10000)
{
this.insuredAmountLessThan10000 = insuredAmountLessThan10000;
}
public boolean isInsuredAmountLessThanOrEqualTo10000()
{
return insuredAmountLessThanOrEqualTo10000;
}
public void setInsuredAmountLessThanOrEqualTo10000(
boolean insuredAmountLessThanOrEqualTo10000)
{
this.insuredAmountLessThanOrEqualTo10000 = insuredAmountLessThanOrEqualTo10000;
}
public boolean isInsuredAmountGreaterThan10000()
{
return insuredAmountGreaterThan10000;
}
public void setInsuredAmountGreaterThan10000(
boolean insuredAmountGreaterThan10000)
{
this.insuredAmountGreaterThan10000 = insuredAmountGreaterThan10000;
}
public boolean isInsuredAmountGreaterThanOrEqualTo10000()
{
return insuredAmountGreaterThanOrEqualTo10000;
}
public void setInsuredAmountGreaterThanOrEqualTo10000(
boolean insuredAmountGreaterThanOrEqualTo10000)
{
this.insuredAmountGreaterThanOrEqualTo10000 = insuredAmountGreaterThanOrEqualTo10000;
}
@Override
public String toString()
{
return "Employee [id=" + id + ", name=" + name
+ ", insuredAmountEqualTo10000=" + insuredAmountEqualTo10000
+ ", insuredAmountNotEqualTo10000="
+ insuredAmountNotEqualTo10000 + ", insuredAmountLessThan10000="
+ insuredAmountLessThan10000
+ ", insuredAmountLessThanOrEqualTo10000="
+ insuredAmountLessThanOrEqualTo10000
+ ", insuredAmountGreaterThan10000="
+ insuredAmountGreaterThan10000
+ ", insuredAmountGreaterThanOrEqualTo10000="
+ insuredAmountGreaterThanOrEqualTo10000 + "]";
}
}
applicationContext.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<bean id="medicalInsurence" class="com.ram.model.MedicalInsurence">
<property name="insurencePolicyNumber" value="1919191"></property>
<property name="insuredAmount" value="15000"></property>
</bean>
<bean id="employee" class="com.ram.model.Employee">
<property name="id" value="100"></property>
<property name="name" value="Peter"></property>
<property name="insuredAmountEqualTo10000" value="#{medicalInsurence.insuredAmount == 10000}"></property>
<property name="insuredAmountNotEqualTo10000" value="#{medicalInsurence.insuredAmount != 10000}"></property>
<property name="insuredAmountLessThan10000" value="#{medicalInsurence.insuredAmount lt 10000}"></property>
<property name="insuredAmountLessThanOrEqualTo10000" value="#{medicalInsurence.insuredAmount le 10000}"></property>
<property name="insuredAmountGreaterThan10000" value="#{medicalInsurence.insuredAmount gt 10000}"></property>
<property name="insuredAmountGreaterThanOrEqualTo10000" value="#{medicalInsurence.insuredAmount ge 10000}"></property>
</bean>
</beans>
App.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ram.model.Employee;
public class App
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
System.out.println("---------------------------------------");
Employee employee = (Employee) context.getBean("employee");
System.out.println(
"Got employee object from the ApplicationContext(Spring Container)");
System.out.println(employee);
}
}
Output
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@736e9adb: startup date [Wed Sep 12 09:54:09 IST 2018]; root of context hierarchy
Sep 12, 2018 9:54:09 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
---------------------------------------
Got employee object from the ApplicationContext(Spring Container)
Employee [id=100, name=Peter, insuredAmountEqualTo10000=false, insuredAmountNotEqualTo10000=true, insuredAmountLessThan10000=false, insuredAmountLessThanOrEqualTo10000=false, insuredAmountGreaterThan10000=true, insuredAmountGreaterThanOrEqualTo10000=true]
Click the below link to download the code:
https://sites.google.com/site/ramj2eev2/java_basics/SpringDemo_Spring%20EL_Relational_Op_XML.zip?attredirects=0&d=1
Github Link:
https://github.com/ramram43210/javaee/tree/master/Spring_2018/SpringDemo_Spring%20EL_Relational_Op_XML
Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/e9c84a0f943aefbd0dd1e4776d7594927120b0b9/Spring_2018/SpringDemo_Spring%20EL_Relational_Op_XML/?at=master
See also:
No comments:
Post a Comment