一)什么是SpEL
SpEL -- Spring Expression Language. Spring的表达式语言。举个最简单的例子:- ExpressionParser parser =new SpelExpressionParser();
- Expression exp = parser.parseExpression("'Hello World'");
- String message = (String) exp.getValue();
ExpressionParser parser =new SpelExpressionParser();Expression exp = parser.parseExpression("'Hello World'");String message = (String) exp.getValue();最后 message的值就是 Hello World, 表达式中的单引号''就是表达String类型的一种格式。另外值得注意的一点时,当表达式不符合规范时, parser.parseExpression语句会抛出ParseException;而exp.getValue会抛出EvaluationException 而为了避免最后的类型转换,我们还可以这样写:
- String message = exp.getValue(String.class);
String message = exp.getValue(String.class);二)SpEL举例中需要使用到的类 以下是本文介绍SpEL过程中需要使用到的类,在此列出,以供后续介绍中使用参考: Inventor.java
- package org.spring.samples.spel.inventor;
- import java.util.Date;
- import java.util.GregorianCalendar;
- public class Inventor {
- private String name;
- private String nationality;
- private String[] inventions;
- private Date birthdate;
- private PlaceOfBirth placeOfBirth;
- public Inventor(String name, String nationality){
- GregorianCalendar c= new GregorianCalendar();
- this.name = name;
- this.nationality = nationality;
- this.birthdate = c.getTime();
- }
- public Inventor(String name, Date birthdate, String nationality) {
- this.name = name;
- this.nationality = nationality;
- this.birthdate = birthdate;
- }
- public Inventor() {}
- public String getName() { return name;}
- public void setName(String name) { this.name = name;}
- public String getNationality() { return nationality;}
- public void setNationality(String nationality) { this.nationality = nationality; }
- public Date getBirthdate() { return birthdate;}
- public void setBirthdate(Date birthdate) { this.birthdate = birthdate;}
- public PlaceOfBirth getPlaceOfBirth() { return placeOfBirth;}
- public void setPlaceOfBirth(PlaceOfBirth placeOfBirth) { this.placeOfBirth = placeOfBirth;}
- public void setInventions(String[] inventions) { this.inventions = inventions; }
- public String[] getInventions() { return inventions;}
- }
package org.spring.samples.spel.inventor;import java.util.Date;import java.util.GregorianCalendar;public class Inventor { private String name; private String nationality; private String[] inventions; private Date birthdate; private PlaceOfBirth placeOfBirth; public Inventor(String name, String nationality){ GregorianCalendar c= new GregorianCalendar(); this.name = name; this.nationality = nationality; this.birthdate = c.getTime(); } public Inventor(String name, Date birthdate, String nationality) { this.name = name; this.nationality = nationality; this.birthdate = birthdate; } public Inventor() {} public String getName() { return name;} public void setName(String name) { this.name = name;} public String getNationality() { return nationality;} public void setNationality(String nationality) { this.nationality = nationality; } public Date getBirthdate() { return birthdate;} public void setBirthdate(Date birthdate) { this.birthdate = birthdate;} public PlaceOfBirth getPlaceOfBirth() { return placeOfBirth;} public void setPlaceOfBirth(PlaceOfBirth placeOfBirth) { this.placeOfBirth = placeOfBirth;} public void setInventions(String[] inventions) { this.inventions = inventions; } public String[] getInventions() { return inventions;}}PlaceOfBirth.java
- package org.spring.samples.spel.inventor;
- public class PlaceOfBirth {
- private String city;
- private String country;
- public PlaceOfBirth(String city) { this.city=city;}
- public PlaceOfBirth(String city, String country){
- this(city);
- this.country = country;
- }
- public String getCity() { return city;}
- public void setCity(String s) { this.city = s;}
- public String getCountry() { return country;}
- public void setCountry(String country) { this.country = country;}
- }
package org.spring.samples.spel.inventor;public class PlaceOfBirth { private String city; private String country; public PlaceOfBirth(String city) {this.city=city;} public PlaceOfBirth(String city, String country){ this(city); this.country = country; } public String getCity() {return city;} public void setCity(String s) {this.city = s;} public String getCountry() {return country;} public void setCountry(String country) {this.country = country;}}Society.java
- package org.spring.samples.spel.inventor;
- import java.util.*;
- public class Society {
- private String name;
- public static String Advisors = "advisors";
- public static String President = "president";
- private List<Inventor> members = new ArrayList<Inventor>();
- private Map officers = new HashMap();
- public List getMembers() { return members;}
- public Map getOfficers() { return officers;}
- public String getName() { return name;}
- public void setName(String name) { this.name = name;}
- public boolean isMember(String name){
- boolean found = false;
- for (Inventor inventor : members) {
- if (inventor.getName().equals(name)){
- found = true;
- break;
- }
- }
- return found;
- }
- }
package org.spring.samples.spel.inventor;import java.util.*;public class Society { private String name; public static String Advisors = "advisors"; public static String President = "president"; private Listmembers = new ArrayList (); private Map officers = new HashMap(); public List getMembers() {return members;} public Map getOfficers() {return officers;} public String getName() {return name;} public void setName(String name) {this.name = name;} public boolean isMember(String name){ boolean found = false; for (Inventor inventor : members) { if (inventor.getName().equals(name)){ found = true; break; } } return found; }}