五分钟了解@ExcelIgnoreUnannotated注解

@ExcelIgnoreUnannotatedEasyExcel 框架中的一个注解,用于控制 Excel 导入/导出时对实体类字段的处理方式。它的作用如下:


核心功能

忽略未标注 @ExcelProperty 的字段

  • 当添加 @ExcelIgnoreUnannotated 到类上时,EasyExcel 会 跳过所有未显式标注 @ExcelProperty 的字段 ,仅处理被 @ExcelProperty 明确标记的字段。

  • 如果没有此注解,EasyExcel 默认会尝试处理实体类中的所有字段(包括未标注的字段)。


使用场景

  1. 精确控制导出的字段

    只导出标记了 @ExcelProperty 的字段,忽略其他字段(即使它们是 public 或有无参 getter 方法)。

  2. 避免意外数据泄露

    防止因未显式忽略敏感字段而导致数据被意外导出。

  3. 提升性能

    减少反射扫描的字段数量,加快导入/导出速度。

代码示例

复制代码
@ExcelIgnoreUnannotated // 仅处理带 @ExcelProperty 的字段
public class User {
    @ExcelProperty("姓名")
    private String name;
    
    @ExcelProperty("年龄")
    private Integer age;
    
    private String password; // 不会被导出/导入
}

对比默认行为

行为 @ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
未标注 @ExcelProperty 的字段 会被处理(默认按字段名匹配 Excel 列) 被忽略
需要导出的字段 必须显式标注 @ExcelIgnore 来忽略 只需标注 @ExcelProperty 明确指定

注意事项

  1. @ExcelProperty 配合使用

    如果类上添加了 @ExcelIgnoreUnannotated,则必须通过 @ExcelProperty 明确指定需要处理的字段,否则这些字段会被完全忽略。

  2. 优先级高于其他注解

    即使字段有其他注解(如 @ColumnWidth),只要没有 @ExcelProperty,依然会被忽略。

  3. 适用于复杂对象

    对于嵌套对象,该注解仅作用于当前类的字段,不会影响嵌套类自身的注解规则。

常见问题

Q:如果忘记加 @ExcelProperty 会怎样?

A:字段会被完全忽略,可能导致导出数据缺失或导入时字段为 null

Q:如何导出所有字段(恢复默认行为)?

A:直接移除 @ExcelIgnoreUnannotated 注解即可。

通过使用 @ExcelIgnoreUnannotated,可以更严格地控制 Excel 导入/导出的字段范围,避免因遗漏注解而导致的数据问题。

相关推荐
缺点内向1 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅2 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看3 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
应用市场3 小时前
构建自定义命令行工具 - 打造专属指令体
开发语言·windows·python
桦说编程4 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t4 小时前
ZIP工具类
java·zip
lang201509284 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
Dfreedom.4 小时前
一文掌握Python四大核心数据结构:变量、结构体、类与枚举
开发语言·数据结构·python·变量·数据类型
一半烟火以谋生4 小时前
Python + Pytest + Allure 自动化测试报告教程
开发语言·python·pytest
虚行4 小时前
C#上位机工程师技能清单文档
开发语言·c#