Spring @Value SpEl 知识点小记
在JavaBean文件中使用Spring的@Value注解获取配置文件.yml或资源文件.properties中 key - value 键值信息
@Value("${stu.number}")
private String number;
当键值为 number: 00201000331100 number为String 类型
如果value值不为0开头,则数据可以正常解析;
如果value值为0开头,则数据会按数字类型(进制转换)进行解析 00201000331100 被解析成 17314198080
这里有两组数据:
第一组数据:按照八进制解析成十进制
00201000331100 八进制
17314198080 十进制
第二组数据: 直接解析成十进制
020099200049 十进制
2.0099200049E10 十进制
那么我们想要解析的是字符串怎么办?
只要在value值中添加双引号即可按照字符串正常解析,具体的解析原理要去看@Value注解的解析过程相关源码
number: "00201000331100"
#################################################################
鉴于对以上两组数据解析方式的不同,引发深度思考,最终将问题定位于SpEl表达式解析数据方式上
public class TestSpEl { public static Logger logger = Logger.getLogger(TestSpEl.class); public static void main(String[] args) { ExpressionParser parser = new SpelExpressionParser();
logger.info("" + parser.parseExpression("'Hello World'").getValue());
logger.info("" + parser.parseExpression("6.0221415E+23").getValue());
logger.info("" + parser.parseExpression("0x7FFFFFFF").getValue());
logger.info("" + parser.parseExpression("true").getValue());
logger.info("" + parser.parseExpression("'00201000331100'").getValue());
logger.info("" + parser.parseExpression("20100033110F").getValue());
logger.info("" + parser.parseExpression("20100033110D").getValue());
logger.info("" + parser.parseExpression("20100033110L").getValue());
logger.info("" + parser.parseExpression("02009920049").getValue()); } }
对应的执行结果如下:
14:03:59.734 [main] INFO org.galsang.TestSpEl - Hello World
14:03:59.738 [main] INFO org.galsang.TestSpEl - 6.0221415E23
14:03:59.738 [main] INFO org.galsang.TestSpEl - 2147483647
14:03:59.739 [main] INFO org.galsang.TestSpEl - true
14:03:59.739 [main] INFO org.galsang.TestSpEl - 00201000331100
14:03:59.739 [main] INFO org.galsang.TestSpEl - 2.01000325E10
14:03:59.739 [main] INFO org.galsang.TestSpEl - 2.010003311E10
14:03:59.739 [main] INFO org.galsang.TestSpEl - 20100033110
14:03:59.739 [main] INFO org.galsang.TestSpEl - 2009920049
Spring @Value SpEl 知识点小记的更多相关文章
- kubebuilder实战之八:知识点小记
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Spring Security -SpEL表达式
Spring Security -SpEL表达式 开启SpEL表达式 <!-- use-expressions是否开启 SpEL表达式 o.s.s.web.access.expression.W ...
- Sass 主要知识点小记
Sass 主要知识点小记 以前写样式的时候,每个元素的颜色,背景色都需要重新写一遍,然后就想CSS难道没有变量么?最后就查到Sass.但当时没有静下心来好好的看一下,今天正好有时间,就在这里边看边整理 ...
- 回顾maven项目的spring boot相关知识点
2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...
- Spring基础—— SpEL
一.SpEL:Spring 表达式语言,在使用的时候类似于 EL 表达式,但是需要注意的是,SpEL 使用在 Spring Config 文件中. 二.格式:使用 #{} 作为界定符,所有在大括号中的 ...
- spring mvc开发过程知识点记录
给一个客户做的一个小项目,需求就是输入类似一个短网址http://dd.yy/xxxx然后跳转到另外一个域名下的图书文件.(实际很多短网址站都提供API供调用吧,不过客户需求是他自己建立一个短网址服务 ...
- Spring之Spel表达式
正常业务场景一般不用这个技术,但需要知道有这么个东西支持Spring. 记忆力不好,抄了些套路代码便于以后用到. package com.paic.phssp.springtest.spel; imp ...
- Spring学习-- SpEL表达式
Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于 EL:SpEL 使用 #{...} 作为定界符 , 所有在大括号中的字符都将被认为是 SpE ...
- Spring系列.SpEL表达式
Spring表达式语言 SpEL语言是一种强大的表达式语言,支持在运行时查询和操作对象.SpEL表达式不一定要创建IOC容器后才能使用.用户完全可以单独调用SpEL的API来独立的使用时SpEL表达式 ...
随机推荐
- es xxx_by_query
xxx_by_query包括_delete_by_query和_update_by_query,下面分开讲 _delete_by_query 相当于sql中的delete from a where . ...
- lucene原理
lucene查找原理: https://yq.aliyun.com/articles/581877
- putty访问虚拟机
从宿主机中用putty连接虚拟机中的Ubuntu Server. putty默认使用ssh方式连接,这需要在Ubuntu Server中安装ssh服务.使用命令sudo apt-get install ...
- Windows下SVN回滚到旧版本(TortoiseSVN)
当发现新提交的代码有问题,然后想将某个旧的版本作为最新的版本时,可以使用回滚, 操作步骤如下: 1. 签出(CheckOut)最新版本的代码到电脑中(不能做任何修改) 2. 执行TortoiseSVN ...
- 用一个词(TASPK)牢记C程序内存布局
一个典型的C程序内存布局,从低地址到高地址分别为: 1. text (正文段,即代码段 Code Segment) 2. data (已经初始化的数据段) 3. bss (未被初始化的数据段 Bloc ...
- CentOS 7下使用yum安装MySQL5.7
1.卸载 1.1先停掉mysql进程,没有安装过的可以直接跳过 pkill - mysqld rpm -qa|grep -i mysql 1.2用命令 yum -y remove -.el7.x86_ ...
- 【HTML基础】表格和表单
本次博客的主要内容如下: meta和link 表格 表单 meta和link meta meta的属性有两种:name和http-equiv. name属性主要用于描述网页内容,对应与网页内容. 1. ...
- java获取request的url方法区别
1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数.2.request.getRequestURI() ...
- 【转】HttpURLConnection用法详解
原文链接:http://www.blogjava.net/supercrsky/articles/247449.html 针对JDK中的URLConnection连接Servlet的问题,网上有虽然有 ...
- golang学习之win7下go环境搭建
以下均采用windows64环境,首先是go的下载,go有msi安装安装和zip解压安装两种安装方式,使用msi安装后go环境会自动配置,zip解压后需手动配置各种环境变量. 首先是下载,网上一搜一大 ...