SpringBoot读取resources目录下JSON文件的优雅方案
本文提供在SpringBoot中读取资源目录(classpath)下JSON文件的高效实现方案。通过整合Spring的ResourceUtils、Apache Commons IO的文件读取工具以及Fastjson2的反序列化能力,开发者可以避免使用冗长的原生File I/O代码,以最少且优雅的代码量完成配置数据的加载与解析。
实现思路与准备
在构建模块化或配置化的业务系统时,将非核心数据(如动态公告)存储在项目内部而非数据库是一种轻量级选择。为了准确读取这些文件,核心逻辑分为三步:首先利用Spring环境定位资源路径,其次将文件流转换为字符串,最后将其解析为目标对象列表。
第1步:引入必要依赖
目的:获取文件内容转换及JSON解析的支持库。
操作:在pom.xml中添加以下版本依赖:
<!-- 资源目录资源文件读取 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- 反序列化json字符串 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.14</version>
</dependency>
第2步:创建JSON资源文件
入口:位于项目资源目录 src/main/resources/ 下。
动作:新建 notice.json 文件并填入标准JSON数组格式。例如:
[
{
"title": "新功能xxx上线",
"content": "支持xxx"
},
{
"title": "旧功能xxx下线",
"content": "不支持xxx"
}
]
核心Service层实现
第3步:定义并实现读取接口
入口:编写一个服务类,注入于Spring容器。
关键参数:
- 文件路径:使用
classpath:notice.json前缀定位资源。 - 编码格式:统一指定
UTF-8防止中文乱码。
代码实现:
package com.example.springbootjson.service.impl;
import com.alibaba.fastjson2.JSON;
import com.example.springbootjson.domain.NoticeInfo;
import com.example.springbootjson.service.NoticeService;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ResourceUtils;
import java.io.File;
import java.io.IOException;
import java.util.List;
@Service
public class NoticeServiceImpl implements NoticeService {
@Override
public List<NoticeInfo> getNoticeInfoList() throws IOException {
// 1. 获取资源物理路径
File file = ResourceUtils.getFile("classpath:notice.json");
// 2. 转为字符串
String json = FileUtils.readFileToString(file, "UTF-8");
// 3. 反序列化为对象列表
List<NoticeInfo> noticeInfoList = JSON.parseArray(json, NoticeInfo.class);
return noticeInfoList;
}
}
验证结果
动作:运行集成测试或使用该Service的业务Controller。
@Test
void contextLoads() throws IOException {
System.out.println(noticeService.getNoticeInfoList());
}
执行成功后,控制台输出符合预期结构的数据即表示配置读取链路通畅。相比直接使用原始的Java FileInputStream,这种方式利用了Spring封装的API,使代码更具可读性且自动处理了部分环境差异问题。
以上就是SpringBoot读取资源目录中JSON文件方法的详细内容,更多关于SpringBoot资源文件读取的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









