在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 知识点小记的更多相关文章

  1. kubebuilder实战之八:知识点小记

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. Spring Security -SpEL表达式

    Spring Security -SpEL表达式 开启SpEL表达式 <!-- use-expressions是否开启 SpEL表达式 o.s.s.web.access.expression.W ...

  3. Sass 主要知识点小记

    Sass 主要知识点小记 以前写样式的时候,每个元素的颜色,背景色都需要重新写一遍,然后就想CSS难道没有变量么?最后就查到Sass.但当时没有静下心来好好的看一下,今天正好有时间,就在这里边看边整理 ...

  4. 回顾maven项目的spring boot相关知识点

    2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...

  5. Spring基础—— SpEL

    一.SpEL:Spring 表达式语言,在使用的时候类似于 EL 表达式,但是需要注意的是,SpEL 使用在 Spring Config 文件中. 二.格式:使用 #{} 作为界定符,所有在大括号中的 ...

  6. spring mvc开发过程知识点记录

    给一个客户做的一个小项目,需求就是输入类似一个短网址http://dd.yy/xxxx然后跳转到另外一个域名下的图书文件.(实际很多短网址站都提供API供调用吧,不过客户需求是他自己建立一个短网址服务 ...

  7. Spring之Spel表达式

    正常业务场景一般不用这个技术,但需要知道有这么个东西支持Spring. 记忆力不好,抄了些套路代码便于以后用到. package com.paic.phssp.springtest.spel; imp ...

  8. Spring学习-- SpEL表达式

    Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于 EL:SpEL 使用 #{...} 作为定界符 , 所有在大括号中的字符都将被认为是 SpE ...

  9. Spring系列.SpEL表达式

    Spring表达式语言 SpEL语言是一种强大的表达式语言,支持在运行时查询和操作对象.SpEL表达式不一定要创建IOC容器后才能使用.用户完全可以单独调用SpEL的API来独立的使用时SpEL表达式 ...

随机推荐

  1. Oracle SQL Developer 查询时间格式

    工具->首选项->数据库->NLS->日期格式: DD-MON-RR 修改为: YYYY-MM-DD HH24:MI:SS

  2. quickly calc pow(i, n) since i in [1~n]

    #include <bits/stdc++.h> using namespace std; #define inf (0x3f3f3f3f) typedef long long int L ...

  3. Google Map API抓取地图坐标信息小程序

    因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...

  4. (转)expect命令脚本语言介绍及生产实践

    原文:http://www.fblinux.com/?p=526 Expect介绍 expect是一个用来实现自动交互功能的软件套件,是用来实现自动和交互式任务程序进行通信,无需人的手工干预.比如SS ...

  5. 理解session和cookie

    Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的.例如,使用 Cookie ...

  6. Android 再谈handler

    今天在做http网络事件的响应网络接收处理一般不能放在主线程中使用,目前也只会使用AsyncTask进行处理!之前虽然写过handler处理的一些文章但是发现全不会了!无奈~ 关于handler某位兄 ...

  7. js模块加载框架 sea.js学习笔记

    seajs实现了JavaScript 的 模块开发及按模块加载.用来解决繁琐的js命名冲突,文件依赖等问题,其主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载. 官方文档:http:/ ...

  8. unity Socket TCP连接案例(一)

    非常清晰的demo 服务端 using System; using System.Collections; using System.Collections.Generic; using System ...

  9. CentOS7配置中文

    CentOS7配置中文 yum install kde-l10n-Chinese -y vim /etc/locale.conf修改为zh_CN.UTF-8 vim /etc/environment添 ...

  10. pyhon-爬虫实战抓取豆瓣top250到mysql

    采集地址https://movie.douban.com/top250 一.创建mysql数据库 CREATE TABLE `t_doubantop` ( `id` int(11) unsigned ...