记录SpringEL表达式中的 ${}和#{}的区别

一、${}

${} 用于加载外部文件指定的Key值,常用在xml中,@Value(" ${key_value}")

二、#{}

#{} 功能比 ${} 功能更强大,强调的是把内容赋值给属性,示例:

  1. 表示常量: #{‘1’} ,#{’ This is a Constant Str’}
  2. 使用java代码new/instance of: 此方法只能是java.lang 下的类才可以省略包名 #{“new Spring(‘Hello World’)”}
  3. 使用T(Type): 使用“T(Type)”来表示java.lang.Class实例,同样,只有java.lang 下的类才可以省略包名。此方法一般用来引用常量或静态方法 ,#{“T(Integer).MAX_VALUE”}
  4. 变量: 使用“#bean_id”来获取,#{“beanId.field”}
  5. 方法调用: #{“#abc.substring(0,1)”}
  6. 运算符表达式: 算数表达式,比较表达式,逻辑表达式,赋值表达式,三目表达式,正则表达式
  7. 判断空: #{“name?:’other’”}

三、#{}和#{}组合使用

#{} 和 ** $ {} ** 可以混合使用,但是必须 #{}外面 注意不能反过来
例如:

@Component
public class ERPTrackerStatusJob extends QuartzJobBean {

    // 1天-->对应的分钟数
    private static final long ONE_DAYS_MIN = 60 * 24L;

    @Value("#{T(java.lang.Integer).parseInt('${spring.quartz.trackerStatusJob.receiveDaysNum:10}')}")
    private Integer receiveDaysNum;
	
	@Override
    @Cacheable(cacheNames = "RedisCache_7D", key = "'PRODUCT-VIDEO-' + #productId+'-'+#type")
    public List<ProductVideo> findByProductIdAndType(Long productId, Integer type) {
        return videoRepository.findAllByProductIdAndType(productId, type);
    }
}
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值