我正在开发一个独立的Swing/Spring应用程序,它将部署在许多不同的环境中。因此,我需要Spring加载一个外部配置文件,用户将在其中输入数据库凭据。当我用Netbeans注释我的配置类并运行它时,一切都很好:
@PropertySource("classpath:config.properties")在这种情况下,文本文件从src/main/resources文件夹中获取,应用程序可以使用凭据启动。我的问题涉及最终将部署的打包JAR文件。由于类路径在JAR中,用户如何能够编辑其内容?
是否有一种方法可以让@PropertySource指向打包的JAR之外,例如,我完全愿意添加一个环境变量,作为应用程序工作的必要条件?
发布于 2018-02-19 21:14:16
如前所述,您可以使用yml获取外部属性:
@PropertySource("file:${application_home}config.properties")//or指定yaml文件
发布于 2018-02-19 21:14:39
用这个:
@PropertySource("file:/path/to/file")${.}占位符将针对已在环境中注册的任何/所有属性源进行解析。
允许这样的事情:
@PropertySource("file:${my_var}path/to/file")发布于 2018-02-19 21:40:03
您可以将您的配置文件作为类路径的一部分(在jar中),以及在类路径之外的另一个配置文件,后者将重写打包配置中的默认值。您可以使用file: URI而不是classpath从类路径外部加载外部文件:
@PropertySource("file:/config.properties")
但是:您不必自己使用@PropertySource: Spring引导从不同位置自动加载配置文件:
SpringApplication将在以下位置从application.properties文件中加载属性,并将它们添加到SpringApplication中:
列表按优先级排序(在列表中较高的位置中定义的属性覆盖在较低位置中定义的属性)。
https://stackoverflow.com/questions/48874223
复制相似问题