Spring批量加载Resource目录下的文件

项目中的配置文件用json方式存储在了resources下面的文件夹下面。如下:

在代码里面需要将他们全部读出来。

但是ClassLoader.getResource 只能读取单个文件,不能读取文件列表。然后就想到了 mybatis 同样也是要读配置文件列表,就想看看 mybatis 是怎么做的。然后就找到了Spring 中的 ResourcePatternResolver, 查看了这个类的代码,可以完美解决加载文件列表的问题。

这个类会自动推测要读取的文件的位置,比如在文件夹中还是在压缩包中还是在jar包中。这就很重要,因为最开始是自己实现的扫描文件列表的功能,ide中测试没有问题,但是打包成jar包以后就读取不到了,原因就在于ide测试的时候文件是在target编译目录下,所以读取没有问题,但是一旦打包成jar包就必须从jar包里面读取了,就会读取不到。

代码如下:

java 复制代码
private static final ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
private static final String CONFIG_FILE_PATH = "classpath:/device/*.json";

private static void loadDeviceDefineList() {
    try {

        final Resource[] resources = resourceResolver.getResources(CONFIG_FILE_PATH);
        for (Resource resource : resources) {
        	// ...
            final ILinkDeviceFileDef bean = loadDeviceFileDef(resource);
        }
    } catch (Exception e) {
        log.error("Can't load Resource : ");
    }
}

运行结果如下:

相关推荐
好家伙VCC1 分钟前
**CQRS模式实战:用Go语言构建高并发读写分离架构**在现代分布式系统中,随着业务复杂度的提升和用户量的增长,传统的单数据库模型逐
java·数据库·python·架构·golang
fy121631 分钟前
Java进阶——IO 流
java·开发语言·python
二妹的三爷2 分钟前
Node.JS 版本管理工具 Fnm 安装及配置(Windows)
java
cngkqy3 分钟前
NoClassDefFoundError: org/apache/poi/logging/PoiLogManager
java
星辰_mya10 分钟前
数据库运维与数据安全:备份恢复、日志分析与故障排查
运维·数据库·后端·面试·架构师
AskHarries11 分钟前
48小时打造一个类似 Product Hunt 的网站
后端
l1o3v1e4ding17 分钟前
Java网站项目集成GO-FLY开源在线客服系统功能,集成IM即时通信
java·golang·开源
太难了啊21 分钟前
深入理解智能体 Reflection 模式:自我反思与迭代改进的实践指南
人工智能·后端
m0_6515939121 分钟前
领域驱动设计(DDD)实战指南:如何正确构建复杂系统
java·软件工程·ddd