“存储”一个对象以供将来在Java中使用

时间:2010-10-04 13:44:00

标签: java xml

我有一个XML文件,其中定义了某些属性和映射。这些属性很少发生变化。每次调用use我的jar文件时,我都不想重新加载和评估属性/映射。有没有什么办法可以将我的XML文件预编译成一个对象,以便XML值存储在对象中?每当我更改XML文件时,如果有的话,我只需要重新编译一次。

5 个答案:

答案 0 :(得分:2)

在将XML数据读入对象后,可以使用Serialization将其写入文件,然后在加载XML源之前检查它是否已更改(通过比较它们的时间戳)。如果XML源没有更改,您可以通过从文件系统反序列化来恢复配置对象。

答案 1 :(得分:2)

您可以使用Java文件来定义这些属性和映射。如果你不打算在没有重新编译的情况下加载对它的更改,就不需要乱用XML。

答案 2 :(得分:2)

结合可能有助于您找到方法的问题:

  • 您的XML文件有多大?
  • 解析它并将其转换为对象需要多长时间?
  • 每次加载库时,是否禁止使用此过程(加载+解析+转换为对象)?

Spring就是这样做的;使用XML配置上下文,并在启动应用程序时加载,根据您的配置解析和创建对象。我一直在处理Spring中的大型XML文件,我可以说它非常快 - 考虑到它只执行一次,在启动时,它几乎不是问题。

Spring也有一个alternative,其中你的配置是实际代码,但我猜你想坚持使用XML配置。

另一种方法是使用工具读取XML,将其转换为对象,然后使用对象序列化将此对象存储到文件中。然后,您可以将此文件作为反序列化对象加载。

答案 3 :(得分:1)

这可能不被认为是世界上最好的做法...但如果你想在任何特定框架之外做这个,你总是可以使用普通的Java序列化。这正是你所说的......将一个对象存储到磁盘(或其他)并稍后将其恢复到内存。如果主题不熟悉,请查看this tutorial

答案 4 :(得分:0)

您可以将XML中的数据读入java对象,然后serialize该对象。您甚至可以让对象检查xml文件的时间戳,并在更改时自动重新读取它。