spring boot项目运行jar包读取包内resources目录下的文件

spring boot项目运行jar包读取包内resources目录下的文件


摘要

Spring Boot 项目打包成 jar 包后,resources 目录下的文件将会被打包到 jar 包中。如果需要在 Spring Boot 项目运行 jar 包后读取 resources 目录下的文件,可以使用 this.getClass().getResourceAsStream() 方法。

结果输出:

bash 复制代码
jar包程序读取包内resources下的文件:
{"name":"小明","age":45}
{"level":2,"name":"小丽","age":33}

码代码

文件所在目录/src/main/resources/static/my-json-data.json

java 复制代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.InputStream;

@Component
public class MockRunApp {
    static String jsonData1;
    static String jsonData2;

    /**
     * Bean的构建后置过程中读取resources目录下的文件
     */
    @PostConstruct
    public void constructFunc(){
        try {
            InputStream resourceAsStream = this.getClass().getResourceAsStream("/static/my-json-data.json");
            assert resourceAsStream != null;
            String content = IOUtils.toString(resourceAsStream, "UTF-8");
            ObjectMapper objectMapper = new ObjectMapper();
            Object object = objectMapper.readValue(content, Object.class);
            JSONArray objects = JSON.parseArray(JSONObject.toJSONString(object));
            jsonData1 = objects.getString(0);
            jsonData2 = objects.getString(1);

            System.out.println("jar包程序读取包内resources下的文件:");
            System.out.println(jsonData1);
            System.out.println(jsonData2);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}

相关文章

Web应用启动自动运行代码的三种方案

相关推荐
云原生指北10 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
Leinwin15 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦15 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士15 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿15 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
盐水冰16 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头16 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun31415916 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
努力也学不会java17 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰17 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql