我有一个XML文件,其中定义了某些属性和映射。这些属性很少发生变化。每次调用use我的jar文件时,我都不想重新加载和评估属性/映射。有没有什么办法可以将我的XML文件预编译成一个对象,以便XML值存储在对象中?每当我更改XML文件时,如果有的话,我只需要重新编译一次。
答案 0 :(得分:2)
在将XML数据读入对象后,可以使用Serialization将其写入文件,然后在加载XML源之前检查它是否已更改(通过比较它们的时间戳)。如果XML源没有更改,您可以通过从文件系统反序列化来恢复配置对象。
答案 1 :(得分:2)
您可以使用Java文件来定义这些属性和映射。如果你不打算在没有重新编译的情况下加载对它的更改,就不需要乱用XML。
答案 2 :(得分:2)
结合可能有助于您找到方法的问题:
Spring就是这样做的;使用XML配置上下文,并在启动应用程序时加载,根据您的配置解析和创建对象。我一直在处理Spring中的大型XML文件,我可以说它非常快 - 考虑到它只执行一次,在启动时,它几乎不是问题。
Spring也有一个alternative,其中你的配置是实际代码,但我猜你想坚持使用XML配置。
另一种方法是使用工具读取XML,将其转换为对象,然后使用对象序列化将此对象存储到文件中。然后,您可以将此文件作为反序列化对象加载。
答案 3 :(得分:1)
这可能不被认为是世界上最好的做法...但如果你想在任何特定框架之外做这个,你总是可以使用普通的Java序列化。这正是你所说的......将一个对象存储到磁盘(或其他)并稍后将其恢复到内存。如果主题不熟悉,请查看this tutorial。
答案 4 :(得分:0)
您可以将XML中的数据读入java对象,然后serialize该对象。您甚至可以让对象检查xml文件的时间戳,并在更改时自动重新读取它。