【问题标题】:Storing java objects in memory in a Java jar project在 Java jar 项目中将 java 对象存储在内存中
【发布时间】:2021-06-14 03:08:26
【问题描述】:

在 Java jar 项目的内存中存储 java 对象。这不是 Springboot 项目。只是作为依赖项添加到另一个 SpringBoot 项目的库。

我可以在 Jar 项目中将对象保存在内存中吗?它是如何实现的?任何建议将不胜感激。

【问题讨论】:

  • 您想将数据存储在 jar 或内存中,就像将其存储为运行时数据一样,一旦程序停止就会被删除?

标签: java static singleton ehcache in-memory


【解决方案1】:

简答:您不应该在运行时将对象存储到应用程序的 JAR 文件中。将它们存储在文件系统中的文件中。

更长的答案:

类路径上的 JAR 文件可能会被锁定。或只读。或者在某些情况下,它可能是下载缓存目录中的临时副本。

即使您确实设法写入 JAR,未指定会发生什么;例如在应用程序 JVM 重新启动之前,对象是否可见。

因此,鉴于所有这些不确定性,在运行时将数据写入应用程序的 JAR 文件是不切实际的。

另一件事是人们(用户、系统管理员、IT 安全人员)认为 JAR 文件没有被修改,如果应用程序这样做,他们很可能会感到震惊和/或烦恼。

最后,没有真正需要在运行时将内容写入 JAR 文件。您需要保存的任何内容都可以/应该以普通文件的形式写入文件系统。根据平台和数据的性质,可能有一个放置文件的常规位置,或者您可以制定自己的约定......或者让用户通过应用程序的配置文件或命令说出将数据放在哪里选项。


如果我还没有说服你这是一个坏主意,请参阅:How can my Java program store files inside of its .jar file?

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2015-05-27
    • 2017-01-25
    相关资源
    最近更新 更多