springboot的@Value中#和$区别详解

 更新时间:2023年11月18日 09:38:01   作者:morris131  
这篇文章主要介绍了springboot的@Value中#和$区别详解,@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中#和$区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot切面添加日志功能实例详解

    springboot切面添加日志功能实例详解

    在本篇文章里小编给大家整理的是关于springboot 切面添加日志功能的相关知识点内容,有需要的朋友们可以参考下。
    2019-09-09
  • 浅谈线性表的原理及简单实现方法

    浅谈线性表的原理及简单实现方法

    下面小编就为大家带来一篇浅谈线性表的原理及简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java值得使用Lambda的8个场景合集

    Java值得使用Lambda的8个场景合集

    可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,但毕竟2023年了,JDK都出了那么多新版本,是时候试试Lambda了
    2023-08-08
  • SpringMVC DispatcherServlet组件实现解析

    SpringMVC DispatcherServlet组件实现解析

    这篇文章主要介绍了SpringMVC DispatcherServlet组件实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • idea快速实现将SpringBoot项目打包Docker镜像并部署

    idea快速实现将SpringBoot项目打包Docker镜像并部署

    本文主要介绍了idea快速实现将SpringBoot项目打包Docker镜像并部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Spring boot+beetl+i18n国际化处理的方法

    Spring boot+beetl+i18n国际化处理的方法

    这篇文章主要介绍了Spring boot+beetl+i18n国际化处理的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java中自动装箱、拆箱引起的耗时详解

    Java中自动装箱、拆箱引起的耗时详解

    这篇文章主要给大家介绍了关于Java中自动装箱、拆箱引起的耗时的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 浅析SpringBoot自动化配置原理实现

    浅析SpringBoot自动化配置原理实现

    这篇文章主要介绍了浅析SpringBoot自动化配置原理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • HashMap红黑树入门(实现一个简单的红黑树)

    HashMap红黑树入门(实现一个简单的红黑树)

    红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树发明时被称为平衡二叉B树,后来修改为如今的“红黑树”
    2021-06-06
  • SpringMVC @RequestMapping注解应用方法示例讲解

    SpringMVC @RequestMapping注解应用方法示例讲解

    通过@RequestMapping注解可以定义不同的处理器映射规则,下面这篇文章主要给大家介绍了关于SpringMVC中@RequestMapping注解用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论