配置文件 - 将它们放在Java中的位置?

时间:2010-02-11 21:58:23

标签: java spring configuration

我有一个java桌面应用程序,配置文件的问题令我烦恼。

我想要的是我的可分发应用程序文件夹看起来像这样:

MyApp/Application.jar
MyApp/SpringConfig.xml
MyApp/OtherConfig.xml
MyApp/lib

但目前SpringConfig.xml位于Application.jar内,我甚至无法以编程方式找到OtherConfig.xml

我不在乎如何在编译路径中设置各种文件,只要它们看起来像上面那样。

所以..

  • 我在哪里将文件放入我的开发设置?
  • 以及如何以编程方式访问它们?

感谢

4 个答案:

答案 0 :(得分:3)

  • spring配置文件与应用程序的代码和连线有关,因此最好是在jar中,并且应该由用户更改

  • (new File(".")).getAbsolutePath();返回广告素材的绝对路径 - 然后您可以通过简单的OtherConfig.xml

  • 加载FileInputStream
  • 如果SpringConfig.xml包含数据库凭据等配置数据,请将它们放在外部application.properties中,并使用自定义PropertyPlaceholderConfigurer加载外部文件。

    < / LI>

回答“我在哪里将文件放入我的开发设置”这个问题是不可能的,因为我们不了解您的环境。

实际上,如果您希望能够自己编辑配置(而不一定是最终用户),可以使用任何zip软件打开jar(例如WinRAR)并在jar中编辑配置文件。

更新:因为看起来你不能让配置文件成为jar之外的地方。好吧,首先,您可以手动执行 - 只要.jar完成,只需从内部删除配置文件并将其放在外面。

答案 1 :(得分:1)

在开发模式下,将它们放在源目录中,然后将它们复制到您的类文件夹中,然后您可以使用类加载器访问它们。

示例:

URL url =  ClassLoader.getSystemResource("test.properties");
Properties p = new Properties();
p.load(new FileInputStream(new File(url.getFile())));

在Prod模式下,你可以让它们成为jar的一部分。

答案 2 :(得分:1)

我通常创建一个结构,其中我有一个 src / 目录,然后其他目录存在于同一级别。其中一些目录包括:

  • lib / - 外部库
  • config / - 配置文件
  • 资源/ - 我使用的各种资源(图片等)

在同一级别,然后我创建一个Ant脚本来执行我的构建,以便在构建时将相应的配置文件,资源,库等复制到我的JAR文件中。到目前为止,它对我来说非常有用,并且是一个相当容易理解的组织结构。

更新:访问我的配置文件通常是通过了解其位置并打开它们并在代码中读取它们来完成的。因为我使用Ant来构建,所以我确保我的配置文件位于我期望的位置。因此,例如,在我创建的最近的应用程序中,当我编译时,我的JAR文件位于顶级目录中(相对于应用程序发布结构)。然后,在同一级别有一个“主”配置文件。并且主题文件夹中有一个“主题”配置文件。

要阅读各种文件,我只需像打开其他文件一样打开它们,然后阅读它们并从那里开始。它没什么特别的花哨但它运行良好,如果我需要,它可以很容易地手动更改配置。

答案 3 :(得分:0)

1。)我不知道怎么回答这个问题。 ¿哪里可以轻松找到它们?不要明白问题的真正意义(不要误解我的意思,不是你的错,我是那个不理解的人)

2.。)在您的操作系统中使用环境变量(如PATH,但使用唯一名称,“APPNAME_CONFIG”或其他)。然后在你的代码中引用它们。