springboot的@Value中#和$区别详解
@Value中$的使用
@Value注解的作用主要可以给属性直接赋值、也可以读取配置文件中的值给属性赋值。
$用来读取配置文件中的值。
package com.morris.spring.boot.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
public class AtValueConfig {
// 直接赋值
@Value("hello")
private String hello; // hello
// 读取配置文件中的value.name
@Value("${value.name}")
private String name; // morris
// 读取配置文件中的value.age,不存在给个默认值
@Value("${value.age:18}")
private Integer age; // 18
private Integer num;
// 通过set方法注入,这样可以对类型不匹配的异常进行捕获
@Value("${value.num:xxx}")
public void setNum(String num) {
try {
this.num = Integer.parseInt(num);
} catch (Exception e) {
// ignore
}
}
}
@Value中#的使用
#其实是Spring Expression Language (SpEL)表达式,可以在注入属性前进行一些简单的计算等逻辑。
@Value(“#{}”)中使用关系操作符:
// Relational Operators 关系操作符
@Value("#{2 == 2}")
private boolean b1; // true
@Value("#{2 < 1}")
private boolean b2; // false
@Value("#{2 > 1}")
private boolean b3; // true
@Value(“#{}”)中使用逻辑操作符:
// Logical Operators 逻辑操作符
@Value("#{true && false}")
private boolean b4; // false
@Value("#{true || false}")
private boolean b5; // true
@Value("#{!false}")
private boolean b6; // true
@Value(“#{}”)中使用算数操作符:
// Mathematical Operators 算数操作符
// Addition
@Value("#{1 + 1}")
private int two; // 2
@Value("#{'test' + ' ' + 'string'}")
private String testString; // 'test string'
// Subtraction
@Value("#{1 - -3}")
private int four; // 4
@Value("#{1000.00 - 1e4}")
private double d; // -9000.0
// Multiplication
@Value("#{-2 * -3}")
private int six; // 6
@Value("#{2.0 * 3e0 * 4}")
private double twentyFour; // 24.0
// Division
@Value("#{6 / -3}")
private int minusTwo; // -2
@Value("#{8.0 / 4e0 / 2}")
private double one; // 1.0
// Modulus
@Value("#{7 % 4}")
private int three; // 3
@Value("#{18 / 5 % 3}")
private int zero; // 0
// Operator precedence
@Value("#{1+2-3*8}")
private int minusTwentyOne; // -21
@Value(“#{}”)中使用方法:
// 使用方法
@Value("#{'abc'.substring(1, 3)}")
private String bc; // bc
@Value("#{'123'.length}")
private int num; // 3
@Value中#和$结合使用
@Value中#和$结合使用注入list:
// 注入list
@Value("#{${value.list:'123,456,789'}.split(',')}")
private List<String> list;
@Value中#和$结合使用注入array:
// 注入数组
@Value("#{${value.array:'123,456,789'}.split(',')}")
private List<String> array;
@Value中#和$结合使用注入map:
// 注入map
@Value("#{${value.map:{'name':'morris','age':18}}}")
private Map<String, String> map;
到此这篇关于springboot的@Value中#和$区别详解的文章就介绍到这了,更多相关@Value中#和$区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下,感兴趣的朋友跟随脚本之家小编一起学习吧2018-05-05
Java SpringMVC的@RequestMapping注解使用及说明
这篇文章主要介绍了Java SpringMVC的@RequestMapping注解使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
SpringBoot+Mybatis使用Enum枚举类型总是报错No enum constant&n
这篇文章主要介绍了SpringBoot+Mybatis使用Enum枚举类型总是报错No enum constant XX问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12


最新评论