V哥官网:http://www.vgxit.com
本博客对应视频教程:http://www.vgxit.com/course/23
使用Spring表达式
1,概述
Spring还提供了更加灵活的注入方式。那就是Spring表达式,也叫做Spring EL。Spring EL非常强大。我们本节课会好好的学习。
2,Bean属性设置默认值
package com.vgxit.learn.spring.ktdm.el.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class User {
@Value("#{1}")
private Integer id;
@Value("#{'liyitong'}")
private String username;
@Value("#{'tongtong'}")
private String nickname;
}
3,引用其他对象和其他对象的属性
1,定义一个Role对象
package com.vgxit.learn.spring.ktdm.el.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("role")
@Data
public class Role {
@Value("#{1}")
private Integer id;
@Value("#{'超级管理员'}")
private String name;
}
2,我们在User对象中,引用一个Role对象和这个对象的名称
package com.vgxit.learn.spring.ktdm.el.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class User {
@Value("#{1}")
private Integer id;
@Value("#{'liyitong'}")
private String username;
@Value("#{'tongtong'}")
private String nickname;
@Value("#{role}")
private Role role;
@Value("#{role.getName()}")
private String roleName;
}
4,引用静态方法和常量
有的时候,我们希望使用一些静态方法和常量,比如我们要用到圆周率。这个圆周率其实在Java的Math对象中就定义了一个PI的常量。
package com.vgxit.learn.spring.ktdm.el.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class User {
@Value("#{1}")
private Integer id;
@Value("#{'liyitong'}")
private String username;
@Value("#{'tongtong'}")
private String nickname;
@Value("#{role}")
private Role role;
@Value("#{role.getName()}")
private String roleName;
@Value("#{T(Math).PI}")
private Double pi;
@Value("#{T(Math).random()}")
private Double rand;
@Value("#{T(com.vgxit.learn.spring.ktdm.el.changliang.Changliang).NUM}")//引用定义在非java.lang包西面的类,需要写全路径名
private Integer num;
}
5,EL表达式运算
package com.vgxit.learn.spring.ktdm.el.beans;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class User {
@Value("#{1}")
private Integer id;
@Value("#{'liyitong'}")
private String username;
@Value("#{'tongtong'}")
private String nickname;
@Value("#{role}")
private Role role;
@Value("#{role.getName()}")
private String roleName;
@Value("#{T(Math).PI > 4 ? '大于4' : '小于等于4'}")
private String pi;
@Value("#{T(Math).random()}")
private Double rand;
@Value("#{T(com.vgxit.learn.spring.ktdm.el.changliang.Changliang).NUM}")//引用定义在非java.lang包西面的类,需要写全路径名
private Integer num;
@Value("#{T(Math).PI < 4}")
private Boolean flag;
}