前言最近在做一个公众号相关内容,公告中的内容意在进行配置。但是考虑到数据库中存储,需要创建数据库表;存放在配置组件中,担心配置组件存不下;因此,决定暂时存放在项目的资源目录下,以JSON格式存放。需求怎么变,再做另一个方案。本文分享SpringBoot如何读取资源目录JSON配置文件。思路是利用Spring的ResourceUtils读取资源目录下的json文件。使用common-io将读取的文件转换成json字符串。使用fastjson将json字符串反序列化为对象。例1.Maven依赖pom.xml,主要是common-io和fastjson的引入。commons-iocommons-io2.11.0com.alibaba.fastjson2fastjson22.0.142.json资源文件notice.json只是列出了要使用的json内容。[{"title":"新功能xxx上线","content":"支持xxx"},{"title":"旧功能xxx下线","content":"不支持xxx"}]3.阅读拿json的Service3.1。定义接口包com.example.springbootjson.service;importcom.example.springbootjson.domain.NoticeInfo;importjava.io.IOException;importjava.util.List;/***@authorhongcunlin*/publicinterfaceNoticeService{/***获取通知**@returnNotice*@throwsIOExceptionfile*/ListgetNoticeInfoList()throwsIOException;}3.2.接口的实现可以说是本文的核心部分,具体可以看代码中的实现,通过ResourceUtils读取json文件notice.json,通过common-io的FileUtils将文件转为json字符串,以及通过fastjson的JSON反序列化json对象。包com.example.springbootjson.service.impl;导入com.alibaba.fastjson2.JSON;导入com.example.springbootjson.domain.NoticeInfo;导入com.example.springbootjson.service.NoticeService;导入org.apache.commons.io.FileUtils;importorg.springframework.stereotype.Service;importorg.springframework.util.ResourceUtils;importjava.io.File;importjava.io.IOException;importjava.util.List;/***@authorhongcunlin*/@ServicepublicclassNoticeServiceImplimplementsNoticeService{@OverridepublicListgetNoticeInfoList()throwsIOException{Filefile=ResourceUtils.getFile("classpath:notice.json");Stringjson=FileUtils.readFileToString(file,"UTF-8");ListnoticeInfoList=JSON.parseArray(json,NoticeInfo.class);返回通知信息列表;}}4。测试接口写一个简单的集成测试,注入上面写的Service,执行方法,打印执行结果。包com.example.springbootjson;导入com.example.springbootjson.service.NoticeService;导入org.junit.jupiter.api.Test;导入org.springframework.boot.test.context.SpringBootTest;导入javax.annotation.Resource;导入java.io.IOException;@SpringBootTestclassSpringbootJsonApplicationTests{@ResourceprivateNoticeServicenoticeService;@TestvoidcontextLoads()throwsIOException{System.out.println(noticeService.getNoticeInfoList());}}可以看到可以正常输出json文件中的内容说明我们的程序是正确的。最后,本文分享了SpringBoot项目读取项目资源目录下文件的相关方法。之所以分享,是因为很多人用的是原始的文件IOAPI,没有必要。SpringBoot已经为我们提供了很多优雅的包装。API已启动。作为开发者,即使是使用API??,我们也要与时俱进。