package el;
import java.math.BigDecimal;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class Test {
public static void main(String[] args) {
long currentTimeMillis = System.currentTimeMillis();
ExpressionParser parser = new SpelExpressionParser();
// Expression parseExpression = parser.parseExpression("#person.getString() == '1' && #person.isBool() && #person.integer <= 18357 && #person.doub == 2.010 && #person.bigDecimal >= 20.1");
Expression parseExpression = parser.parseExpression("(#person.getString() == '1' || #person.getString() == '2') && #person.isBool()");
for (int i = 0; i < 10000; i++) {
Person p = new Person(18357, "1", new BigDecimal("20.1"), true, 2.010d);
StandardEvaluationContext conext = new StandardEvaluationContext();
conext.setVariable("person", p);
// Expression parseExpression = parser.parseExpression("#person.bool");
// Expression parseExpression = parser.parseExpression("#person.isBool()");
// Expression parseExpression = parser.parseExpression("#person.getString().equals('2') ");
// Expression parseExpression = parser.parseExpression("#person.integer == 18357 ");
// Expression parseExpression = parser.parseExpression("#person.doub == 2.010 ");
// Expression parseExpression = parser.parseExpression("#person.bigDecimal > 20.1 ");
Boolean value = parseExpression.getValue(conext, Boolean.class);
System.out.println(value);
}
System.out.println(System.currentTimeMillis() - currentTimeMillis);
}
}
package el;
import java.math.BigDecimal;
public class Person {
private Integer integer;
private String string;
private BigDecimal bigDecimal;
private Boolean bool;
private Double doub;
public Person(Integer integer, String string, BigDecimal bigDecimal, Boolean bool, Double doub) {
super();
this.integer = integer;
this.string = string;
this.bigDecimal = bigDecimal;
this.bool = bool;
this.doub = doub;
}
public Integer getInteger() {
return integer;
}
public String getString() {
return string;
}
public BigDecimal getBigDecimal() {
return bigDecimal;
}
public Boolean isBool() {
return bool;
}
public Double getDoub() {
return doub;
}
}