侧边栏壁纸
博主头像
CoderKim

一名后端开发工程师,喜欢学习和分享。

  • 累计撰写 50 篇文章
  • 累计创建 75 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

java项目读取resources下资源文件那点事儿

CoderKim
2021-03-13 / 1 评论 / 0 点赞 / 901 阅读 / 567 字 / 正在检测是否收录...

有时候项目需要一些文件才可以正常运行,最近就有一个这样的项目,需要读取公钥进行加密,读取私钥进行解密,那么如何读取这些文件呢?

0. 最简单的方式

最先想到的就是把文件放在服务器上,并记录存放路径,把路径写在配置文件中,项目运行时从配置文件中的路径读取文件。

这样做固然可行,但是对需要交付给不同客户的项目来说会有几个问题:

  1. 增加了项目交付步骤,交付人员每次多了存放文件并记录、修改配置的步骤;
  2. 人工操作使得失误几率增大,如果路径配置出错,那么会导致项目运行报错。

综上,还是选择将文件放在resources目录下,整体打成jar包或war交付给客户。

1. SpringBoot读取资源文件的方式

这里推荐一篇文章:Java项目读取resources资源文件路径那点事

这篇文章的内容这里就不再赘述,参考着这篇文章,本人使用了其中提到的:

InputStream in = this.getClass().getResourceAsStream("/key/keystore.keystore");

使用流的方式,读取到了文件。

2. 重点注意事项

但是此时遇到了一个问题,加解密老是失败,报密钥不对,经一些列调查后发现,原来的resources文件夹下为了配置使用多环境,在maven的pom.xml中将<filtering>设置为了true,以使得资源文件被复制到目标目录的同时,可以替换其中的标识符。但是这样一来,就将密钥文件也进行了修改,所以需要在pom.xml中加入以下修改:

    <build>  
        ……
        <resources>
            ……
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>key/**</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

resources/key目录下的文件不进行替换。

至此,运行成功撒花🎉

0

评论区