1. 概述
在上文Spring SpEL系列一 基础用法中,通过@Value演示如何使用Spring EL。Spring除了使用@Value,还可以使用xml和java代码直接调用Spring EL。
下文分别使用以上三种方式实现以下功能:
1. 调用String的concat方法
2. 调用JavaBean的属性
3. 访问对象公共属性
4. 获取People的name值,
5. 比较name值是不是hry的结果
以下例子中会使用到的公共类:
public class People{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2. 测试代码
2.1 @Value
这是使用最多的场景
SpELAnnotationExample 直接通过@value注入Spring EL表达式的值,详细见代码。
@Component
public class SpELAnnotationExample {
@Value("#{ 'Hello World'.concat('!') }")
private String stringMethod; // 调用String的concat方法
@Value("#{ T(java.util.Arrays).toString('Hello World'.bytes) }")
private String javaBeanProperties; // 调用JavaBean的属性,如这里实际是调用getBytes()方法
@Value("#{ 'Hello World'.bytes.length }")
private long publicAttr; // 访问对象公共属性
@Value("#{ people.name }")
private String objName; // 获取People的name值,比较name值是不是hry
@Value("#{ people.name=='hry' }")
private boolean objNamecmp; // 比较name值是不是hry人结果
@Override
public String toString(){
return JSON.toJSONString(this);
}
// set/get略
}
SpELAnnotationApplication 启动类:
通过 @Configurable初始化People对象,用于@value的对象属性注入的来源。
@SpringBootApplication
@Configurable
public class SpELAnnotationApplication {
public static void main(String[] args) {
SpringApplication.run(SpELAnnotationApplication.class, args);
}
/**
* 初始化对象
* @return
*/