当前位置: 首页 > 知识库问答 >
问题:

Spring无法正确地从外部配置文件加载属性

苗征
2023-03-14

我有一个内部application.yml文件,位于classpath资源中,包含以下字段:

redis:
  hostname: localhost
  port: 6379
  database: 0
  password:

有一个外部配置文件:config.properties。它定义了一些要在我的服务器上下文中重写的字段。文件配置.属性:

redis.hostname = db.example.com
redis.password = my_password

我正在使用以下命令运行应用程序:

java -jar -Dspring.config.location=file:///home/username/config.properties application.jar

如何使spring正确地重写内部配置文件,使其只重写额外的属性(redis.hostname、redis.password),但仍然保留在内部文件中定义但未在外部文件中定义的其他字段(如redis.port、redis.database)?

附注:我知道这是正在发生的事情,因为当我在外部配置文件中添加redis.port=6379属性时,应用程序可以正常工作。

共有1个答案

阎涵忍
2023-03-14

步骤1:阅读Spring Boot文档:

配置位置的搜索顺序相反。默认情况下,配置的位置为classpath:/、classpath:/config/、file:./、file:./config/。得到的搜索顺序如下:

file:./config/
file:./
classpath:/config/
classpath:/

当使用spring.config.location配置自定义配置位置时,它们将替换默认位置。例如,如果spring.config.location使用值classpath:/custom-config/,file:./custom-config/配置,则搜索顺序为:

file:./custom-config/
classpath:custom-config/

步骤2:指定正确的值:

-Dspring.config.location=classpath:/,file:///home/username/config.properties
 类似资料:
  • 我试图实现的是在application.yml文件上指定一个目录,该目录直接位于类路径上(在/resources下)。我希望能有这样的东西: 使用这种方法,IDE将始终默认为application-dev.yml。当我通过gradle构建应用程序,并在传递命令行参数的同时运行它时,我可以指定配置文件,从而加载适当的文件。理想情况下,能够做到这一点: java-jar-dspring.profile

  • 问题内容: 我在github仓库中下载了spring batch admin应用程序,并将其导入了eclipse中。它完美地工作。 然后,我问自己如何将外部配置文件导入可以在我的职务定义类中使用的应用程序中。 我尝试了这个: 虚拟机参数 作业配置 XML配置 使用tomcat 7启动应用程序时的堆栈跟踪 pom.xml 我使用的文件和配置与spring batch admin github项目完全

  • 在Gradle for Android中,为发布版本定义签名配置似乎是常见的做法,如下所示: 问题是,我想把我的build.gradle文件保存在版本控制中,并且在一些git服务器上没有我的密钥库的密码(这与我用于其他东西的密码相同,愚蠢的,我知道)没有好的感觉。 有没有办法从硬盘驱动器上的某个位置从外部文件加载签名配置?

  • 我正在开发一个Spring Boot应用程序。我想提供一个(相当初级的)插件系统。最初,我希望只将JAR添加到类路径中就足够了,如下所示: 此外,如果我尝试在插件控制器中一个JpaRepository,它会失败,因为它找不到存储库接口类(我猜这是因为我乱弄类加载器引起的问题)。 不过,在我的主应用程序中自动创建存储库就可以很好地工作,因此它的配置不应该是一个问题。 是不是我做错了什么?我是否可以配

  • 我想在spring Boot中设置3个配置文件:production,development,test,使用外部配置文件。 应用程序类: AppConfig类:

  • 主要内容:spring.config.location,示例 1,spring.config.additional-location,示例 2除了默认配置文件,Spring Boot 还可以加载一些位于项目外部的配置文件。我们可以通过如下 2 个参数,指定外部配置文件的路径: spring.config.location  spring.config.additional-location  spring.config.location 我们可以先将 Spring Boot 项目打包成 JAR