Spring Boot IoC(十)Spring EL

版权声明:From Lay https://blog.csdn.net/Sadlay/article/details/83277198

上一篇 Spring Boot IoC(九)使用@Profile

十、Spring EL

Spring EL是Spring提供的非常灵活的spring表达式语言。

通过Spring EL可以拥有更为强大的运算规则来更好的装配Bean

读取属性文件

最常用的是读取属性文件(properties)的值,例如

@Value("${database.driverName}")
String driver;

这里的@Value中的${…}代表占位符,它会读取上下文的属性值装配到属性中,这便是一个最简单的Spring EL表达式。

调用方法

记录一个Bean的初始化时间

@Value("#{T(System).currentTimeMillis()}")
private Long initTime = null;

注意,这里采用#{…}代表启用Spring表达hi,它将具有运算的功能;T(…)代表的是引入类;System是java.lang.*包的类,这是java默认加载的包,因此可以不必写全限定名。如果调用其他包,则需要写出全限定名才能引入类。currentTimeMillis是它的静态(static)方法。也就是我们调用一次System.currentTimeMillis()方法来为这个属性赋值。

直接赋值

我们还可以给属性直接赋值

//赋值字符串
@Value("#{some Stirng here}")
private String str = null;

//科学记数法赋值
@Value("#{9.3E3}")
private double d;

//赋值浮点数
@Value("#{3.14}")
private float pi;

我们还可以获取其他Spring Beand的属性来给当前的Bean属性赋值

@Value("#{beanName.str}")
private String otherBeanProp=null;

这里beanName是IoC容器Bean的名称,str是其属性,代表引用对应的Bean的属性给当前属性赋值。

属性的字母全部大写

@Value("#{beanName.str?.toUpperCase()}")
private String otherBeanPorp=null;

这里引用Str属性后跟着是一个?这个符号的含义是判断这个属性是否为空,如果不空才会去执行toUpperCase()方法,进而把引用到的属性转换为大写,赋予当前属性。

进行运算

//数学运算
@Value("#{1+2}")
private int num;

//浮点数比较运算
@Value("#{beanName.pi==3.14f}")
private boolean piFlag;

//字符串比较运算
@Value("#{beanName.str eq 'Spring Boot'}")
private boolean strFlag;

//字符串连接
@Value("#{beanName.str+' some String'}")
private String atrApp = null;

//三元运算
@Value("#{beanName.d > 1000 ? '大于' : '小于'}")
private String resultDesc = null;

Spring EL能够支持的运算还有很多,其中等值比较如果是数字型的可以使用==比交符,如果是字符串的可以使用eq比较符。

猜你喜欢

转载自blog.csdn.net/Sadlay/article/details/83277198
今日推荐