@Value 只认容器,new 出来的对象拿不到值
这个坑是在导数据的时候撞上的。测试环境的订单表要灌数一万两千条走到八千多行程序没声了。日志里刨出来这么一行java.lang.NullPointerExceptionat 往后的帧全是业务包名我就不抄了。栈指到的代码长这样String path tmpPath /upload;tmpPath 这个字段头顶是有注解的Value(${file.tmp.path}) private String tmpPath;说实话我当时头一个念头就是配置写漏了。翻出 application.yml 一看这个 key 躺得好好的 测试环境里那份也一模一样 本地的单测也没报错。折腾了半个钟头我才盯着调用方那一行ExcelHelper helper new ExcelHelper();就这么个写法。在我原来的印象里Value 属于编译阶段就完成赋值的那类注解。事实正相反容器把 bean 造好之后才有回填这一步 把配置值写进字段。bean 这词听着玄说白了就是容器替你创建、也替你持有的对象。对象要是你自己 new 出来的容器管不着 回填这步自然没有字段维持 Java 默认初值引用类型就是 null。本地单测为什么是绿的用的实例来自容器Autowired private ExcelHelper helper;类还是同一个类只换了获取方式一边有值一边为空。版本是 Spring Boot 2.1.6这里真不怪版本 要怪就怪对象来路不对。这种实例现场有没有快办法认出来我试过看日志。思路一打一行看类名尾巴有没有 CGLIB 那串东西。 CGLIB 是 Spring 生成代理类用的工具经它手的类名会变长。这条路走死了类上没挂任何 AOP 容器发下来的实例类名干干净净和 new 出来的看不出区别。思路二数构造日志出现几次public ExcelHelper() { log.info(ExcelHelper init); }在容器里它是单例一个进程只飘一行。 谁在偷偷 new每调一次多一行谁干的立刻现形。顺带把界限划清容易混的一共有两处。先看 final我起初也把它归进同一个坑后来证伪了。既不给初值、构造函数里也不赋值编译这关就过不去 javac 会先拦下来FinalBlank.java:2: error: variable tmpPath not initialized in the default constructor连编译都过不了null 根本拿不到防它属于多余。再看 static。我只敢确定一点 类根本没被容器收管时它和实例字段一个待遇没人赋值null 到底。如果是容器里的 bean 往静态字段写值我没验过。 网上那种把 static 说成一律不可注入的绝对话我不敢全收。还有一处容易误会${key}想带默认值关键在冒号。Value(${file.tmp.path:}) Value(${file.tmp.path:/data})冒号后头什么都不写也算给了值是空字符串。要是冒号也省了、配置偏偏缺这种最好查启动直接报Could not resolve placeholder file.tmp.path进程根本起不来轮不到跑数据时才炸。 真正吓人的是没进容器那一类一点动静都不给。后来数据我重新灌了一次把八千行之后的缺口补齐。tmpPath 这一劫总算过去了。头疼的是测试环境路径改一下服务就得重启 一次七八分钟起不来到现在没人接这个活。

相关新闻

思维链搜索空间的宽度与深度剪枝:基于局部熵阈值的动态截断算法

思维链搜索空间的宽度与深度剪枝:基于局部熵阈值的动态截断算法

自回归模型在长思维链(Chain of Thought, CoT)推理过程中,每一个推理步骤的展开都会引发假设空间的指数级膨胀。当大模型面对极其复杂的数学定理证明、竞赛级算法推导或长多跳逻辑推理时,未经受控的自由发散往往导致两种病态极端&…

2026/10/11 10:51:24 阅读更多 →
Nexting参考固件移植教程:一套Zephyr代码如何跑通nRF52840与ESP32四块开发板

Nexting参考固件移植教程:一套Zephyr代码如何跑通nRF52840与ESP32四块开发板

【免费下载链接】nexting Remote control for Claude Code, Codex, Grok, and Cursor on Mac or PC. View sessions, send tasks, and drive them remotely from your phone, PIN, or Ring. OpenClaw supported. 项目地址: https://gitcode.com/gh_mirrors/ne/nexti…

2026/10/11 10:51:24 阅读更多 →
安卓原生对接苹果cms后端:接口解析、播放器接入与踩坑实战

安卓原生对接苹果cms后端:接口解析、播放器接入与踩坑实战

简介:这是一份面向苹果CMS影视站开发者与二次开发者的安卓原生APP后端源码包,由最新优化版前端App与Feiapp后端组成,用于快速搭建对接苹果CMS的移动端视频应用。包内含后端PHP接口、前端App工程资源、主题样式及数据库相关文件,共…

2026/10/11 10:51:24 阅读更多 →

最新新闻

SpringBoot+Vue+MySQL工资信息管理系统:从数据库设计到答辩全攻略

SpringBoot+Vue+MySQL工资信息管理系统:从数据库设计到答辩全攻略

每年到了毕业设计选题季,后台收到最多的问题几乎都是同一个:有没有一个项目,技术栈主流、业务不算复杂、做起来工作量适中、答辩时还拿得出手?如果你恰好也在找这个答案,那基于 SpringBoot、Vue、MySQL 的工资信息管理…

2026/10/11 11:43:13 阅读更多 →
一周新增 2,533 颗星、总星数 129k:MoneyPrinterTurbo 热度数据全解读

一周新增 2,533 颗星、总星数 129k:MoneyPrinterTurbo 热度数据全解读

一周新增 2,533 颗星、总星数 129k:MoneyPrinterTurbo 热度数据全解读 【免费下载链接】MoneyPrinterTurbo 利用 AI 大模型和自动化工作流,根据主题或关键词一键生成高清短视频。Generate HD short videos from a topic or keyword with an automated AI…

2026/10/11 11:43:13 阅读更多 →
Win32 字体处理实战:字符度量、枚举筛选与 DPI 适配

Win32 字体处理实战:字符度量、枚举筛选与 DPI 适配

作为常年跟 Win32 打交道的人,我始终觉得字体这块是 GUI 开发里最容易被低估的环节。很多界面看着别扭,问题并不出在布局算法上,而是对“系统字体与字符大小”的理解还停留在“选个字号就行”的层面。这一章我把这些年积累的字体处理经验完整…

2026/10/11 11:43:13 阅读更多 →
ContentUnavailableView 教程:SwiftUI 空状态设计的完整指南

ContentUnavailableView 教程:SwiftUI 空状态设计的完整指南

【免费下载链接】SwiftUI-Agent-Skill SwiftUI agent skill for Claude Code, Codex, and other AI tools. 项目地址: https://gitcode.com/GitHub_Trending/swi/SwiftUI-Agent-Skill 点击查看 免费下载 ContentUnavailableView 是 SwiftUI 内置的系统级"空状…

2026/10/11 11:43:13 阅读更多 →
C#台账系统设计:实现可追溯、防篡改的企业级数据记录

C#台账系统设计:实现可追溯、防篡改的企业级数据记录

简介:这是一套基于C#开发的轻量级台账记录系统设计源码,面向中小型组织、企业行政或财务人员及C#初学者,解决日常台账录入、查询、修改与删除等基础管理需求。资源共67个文件,压缩包大小384KB,包含41个核心C#源文件&am…

2026/10/11 11:43:13 阅读更多 →
StealthChop+如何让步进电机逼近BLDC性能

StealthChop+如何让步进电机逼近BLDC性能

1. 为什么说“步进电机的天花板”正在被重新定义?最近在某高校机电实验室调试一台高精度3D打印平台时,我遇到一个典型矛盾:客户要求Z轴在0.01mm级微动下完全静音、无振动,同时还要在快速回零时保持200mm/s的瞬时加速度。传统细分驱…

2026/10/11 11:42:13 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →