代码之家  ›  专栏  ›  技术社区  ›  Hari Menon

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

  •  1
  • Hari Menon  · 技术社区  · 15 年前

    我有一个XML文件,其中定义了某些属性和映射。这些特性很少改变。我不想每次调用use my jar文件时都重新加载和评估属性/映射。是否有任何方法可以将XML文件预编译为对象,以便XML值存储在对象中?每当我更改XML文件时,如果有,我只需要重新编译一次。

    5 回复  |  直到 15 年前
        1
  •  2
  •   ColinD    15 年前

    您可以使用Java文件来定义这些属性和映射。如果您不打算在不重新编译的情况下利用加载对XML所做的更改的优势,那么就不需要处理XML。

        2
  •  2
  •   stacker    15 年前

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

        3
  •  2
  •   biasedbit    15 年前

    以下几个问题可能有助于您找到一种方法:

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

    Spring就是这样做的;您使用XML配置上下文,当您启动应用程序时,它会根据您的配置加载、解析和创建对象。我在春天处理过大的XML文件,我可以说速度非常快——而且考虑到它只做了一次,在启动时,这几乎从来都不是问题。

    春天也有一个 alternative 其中您的配置是实际的代码,但我猜您应该坚持使用XML配置。

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

        4
  •  1
  •   Steve Perkins    15 年前

    这可能不是世界上最好的做法…但是,如果你想在任何特定的框架之外这样做,你可以只使用简单的香草Java序列化。这正是你所说的……将对象存储到磁盘(或其他任何对象)并稍后将其还原到内存中。退房 this tutorial 如果主题不熟悉。

        5
  •  0
  •   Brad Mace Mike King    15 年前

    您可以从XML读取数据到Java对象中,然后 serialize 那个物体。您甚至应该能够让您的对象检查XML文件的时间戳,并在其更改时自动重新读取它。