我正在尝试从命令行读取配置文件。我主要是这样做的:
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/
,但错误仍然存在。是不是路径写错了?还是我必须在代码中添加/修改一些东西?
编辑
这里是你的问题的答案,为什么我必须使用“附加”,而不仅仅是位置?
首先,当您使用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,对于此属性文件: 在控制器上: 在模板上: 但我在浏览器上看到: