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

从命令行读取的Spring Boot属性文件无法解析占位符“ConfigPath”

叶翰林
2023-03-14

我正在尝试从命令行读取配置文件。我主要是这样做的:

public static void main(String[] args) {
        if(args.length > 0) {
            SpringApplication.run(HeliosAdminBackendApplication.class, args);
        } else {
            System.out.println("Error");
            System.exit(0); 
        }       
    }
import lombok.Getter;

@Configuration
@ConfigurationProperties
@PropertySource(value = "file:${ConfigPath}")
public class MyConfig {

     @Getter
     @Value("${property_name}")
     private String myproperty;

}

然后创建了.jar文件,然后进入包含jar的文件夹,并尝试通过执行以下操作来运行它:

java -jar myapp.jar --spring.config.location=file:application.yml

我的application.yml文件是我的JAR的同一个文件夹。我还将路径设置为c:/my/path/to/folder/,但错误仍然存在。是不是路径写错了?还是我必须在代码中添加/修改一些东西?

编辑

共有1个答案

公孙阳文
2023-03-14

这里是你的问题的答案,为什么我必须使用“附加”,而不仅仅是位置?

首先,当您使用spring.config.location加载配置属性时,spring-boot会尝试在类路径或config目录下搜索配置。这是搜索顺序-

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

但请记住,如果您使用spring.config.locaton,那么它将始终查找“classpath”或“config”,而不是外部配置。

要加载外部配置/自定义配置,则spring boot提供“spring.config.addition-location”,按以下顺序搜索配置-

            file:./custom-config/
            classpath:custom-config/ (This is was your case)
            file:./config/
            file:./
            classpath:/config/
            classpath:/

我希望现在得到了为什么使用“spring.config.addition-location”加载外部配置的答案。

 类似资料:
  • 问题内容: 我有我的配置: 我得到错误 我知道这可能缺少属性文件,但是我在类路径中恰好有它。有什么不见了? 我的web.xml: 问题答案: 你的应用程序中可能有多个。尝试在超类的方法上设置一个断点,看看在应用程序启动时是否多次调用了该断点。如果不止一个,则可能需要查看配置属性,以便你的应用程序可以正常启动。

  • 我的数据库配置类: 和AppConfig: } 嗨,我上面有个错误,我不知道怎么修复,你能帮我吗?在添加这个bean之前,我的项目运行良好: }

  • 我看到下面的错误,当我试图读取属性从类路径在我的Spring项目中使用的@属性源注释。我已经粘贴了我的代码下面,请你帮助让我知道我错过了什么?谢谢。 警告:在上下文初始化期间遇到异常-取消刷新尝试:org.springframework.beans.factory.BeanCreation异常:创建名称为“客户仓库”的bean时出错:自动构建依赖项注入失败;嵌套异常java.lang.Illega

  • 我遇到了一个奇怪的问题,我可以在Intellij中运行Spring Boot应用程序而没有问题,但当我这样做时: 我可以看到这样的错误:Spring Boot无法解析@value占位符。 我所做的研究是获取jar文件,并像使用一样提取这些文件,我可以在类路径根中看到属性文件。最初,我遇到了Maven没有将属性和静态数据从文件夹打包的问题,但我已经通过以下方法解决了这个问题: 有什么意见,想法,我会

  • 问题内容: 我对春天还很陌生,所以请问这是一个愚蠢的问题。当我尝试启动程序时,出现以下错误:。执行以下代码时,将引发错误: 资源文件夹中存在一个名为的属性文件,其中包含主机和端口的信息。我不确定在哪里定义(如果有的话)。也许甚至没有定义,这就是问题所在。我需要将其更改为类似的东西还是缺少其他内容? 问题答案: 您没有正确读取属性文件。propertySource应该将参数传递为:或。将注释更改为:

  • 我有一个SpringBoot应用程序。对于Thymeleaf,对于此属性文件: 在控制器上: 在模板上: 但我在浏览器上看到: