我有一个XML文件,它具有在其中定义的某些属性和映射。这些属性很少会改变。每次打电话使用我的jar文件时,我都不想重新加载和评估属性/映射。有什么方法可以将我的XML文件预编译到对象中,以便将XML值存储在对象中?每当我更改XML文件时,如果曾经,我只需要重新编译一次。“存储”一个对象,以备将来在Java中使用
回答
您可以使用Java文件来定义这些开始的属性和映射。如果您不打算利用加载更改而无需重新编译,则无需混淆XML。
你的意思是创建一个所有领域的类最终?但即使是“最终”对象,如果它们不是原始类型,它们在运行时会被评估吗? – 2010-10-04 15:24:52
是的,这基本上就是我的意思。字符串文字不会被“在运行时评估”。也就是说,如果您担心创建地图或任何需要为此创建的数据结构的开销,那么您正在掌握过早的优化过程。每分钟几次并不是很多,我觉得你正在尝试根据你对没有实际测量的情况下会快或不快的想法进行优化。 – ColinD 2010-10-04 15:32:21
感谢关于过早优化的警告。我确实倾向于经常这样做......是的,我想我应该先测量时间。其实我也可以为此使用java.util.Properties框架。性能比XML文件性能更好吗? – 2010-10-04 15:54:47
在将XML数据读入对象之后,可以使用Serialization将其写入文件,然后在加载XML源文件之前检查它是否已更改(通过比较它们的时间戳)。在XML源文件没有改变的情况下,你可以简单地通过从文件系统反序列化来恢复配置对象。
谢谢......一旦我测量加载时间的差异,这似乎是最好的方法。 – 2010-10-04 15:50:40
这可能不被认为是世界上最好的做法......但如果你想在任何特定框架之外做到这一点,你总是可以使用简单的香草Java序列化。这正是你在谈论的内容......将对象存储到磁盘(或其他)并在稍后将其恢复到内存。如果主题不熟悉,请查看this tutorial。
您可以将XML中的数据读取到java对象中,然后使用serialize那个对象。你甚至应该能够让你的对象检查XML文件的时间戳,并在它发生变化时自动重新读取它。
夫妇一个问题,可能会帮助你找到一个办法是:
- 你有多大的XML文件?
- 需要多长时间才能解析并将其转换为对象?
- 每次加载图书馆时是否禁止将此过程(加载+解析+转换为对象)?
春天就是这样;您使用XML配置上下文,当您启动加载的应用程序时,根据您的配置分析并创建对象。我一直在处理Spring中的大XML文件,我可以说它非常快 - 考虑到它只在启动时执行过一次,所以它几乎不成问题。
Spring也有一个alternative其中你的配置是实际的代码,但我猜你想要坚持XML配置。
另一种方法是使用工具读取XML,将其转换为对象,然后使用对象序列化将此对象存储到文件中。然后您可以将该文件作为反序列化的对象加载。
- 1. 在Java中保存一个对象数组,以备将来在另一个程序中使用
- 2. 存储一个对象以在多个类中使用
- 3. 保存一个对象以备后用
- 4. 如何在scikit-learn中存储TfidfVectorizer以备将来使用?
- 5. 流星:将多个对象存储在一个对象中
- 6. 可以使用对象存储GE来存储图像吗?
- 7. 将对象存储在数组中并打印出来JAVA
- 8. 动态地将JavaScript对象存储在另一个对象中
- 9. Java数组来存储一个类的多个对象
- 10. 如何在使用JAVA的对象存储中创建对象?
- 11. 在Java中的一个“列表”中存储三个对象
- 12. 将java对象存储在HTML5本地存储中
- 13. 存储对象以供将来使用(在重新启动程序中)
- 14. 将对象存储在iOS中供以后使用
- 15. 我可以在Java中的一个HashMap对象中存储多少个元素
- 16. Java:将对象存储在对象数组中
- 17. 迭代器Java来存储对象
- 18. Java HashMap来存储不同的对象
- 19. NSMutableDictionary。使用一个对象来存储整数值
- 20. 如何使用XML来存储一个简单的对象(C#)
- 21. 从Paraview保存3D对象以供将来在Paraview中使用
- 22. Java存储对象
- 23. 在java中的Enum对象中存储一个字符串
- 24. 使用堆栈来存储对象
- 25. 使用“数组”来存储对象
- 26. 使用registry.php来存储对象
- 27. 在java中创建一个二维数组来存储两种对象
- 28. 将多个值+名称存储在一个对象中
- 29. INT []存储到一个对象在Java中
- 30. 储存一个JavaScript对象?
您是否试图避免在多次调用中多次解析XML,或者在同一次调用中多次解析XML?如果前者,请不要打扰。对于它所提供的价值来说,太过头疼了。 – 2010-10-04 13:55:25
这是前者..但为什么不呢?主类将每分钟调用几次,每次尝试解析xml文件。在前一种情况下存储它应该不是更有利吗? – 2010-10-04 15:19:33