我试图将一些财产和资源外部化;具体来说,是一个属性文件和一个json文件
我有一个配置类:
@Configuration
@PropertySource("sheets.properties")
public class SheetsConfiguration {
@Bean(name="sheets.secrets")
public GoogleClientSecrets clientSecrets(GoogleClientSecretsFactory clientSecretsFactory,
@Value("${sheets.credentials.file}") String credentialFileName) {
return clientSecretsFactory.buildWithResourceCredentials(credentialFileName);
// which calls GoogleClientSecretsFactory.class.getResourceAsStream(credentialsFilePath);
// ${sheets.credentials.file} should resolve to "/sheets.json"
}
//...
}
我的启动目录如下所示:
root@foobar:~/# ls ~ -al
total 34292
drwxr-xr-x 4 root root 4096 Mar 8 19:23 .
drwxr-xr-x 3 root root 4096 Mar 7 19:39 ..
-rw-r--r-- 1 root root 35086447 Mar 8 20:50 foo.jar
drwxr-xr-x 2 root root 4096 Mar 8 19:23 logs
-rw-r--r-- 1 root root 436 Mar 8 20:51 sheets.json
-rw-r--r-- 1 root root 91 Mar 8 20:51 sheets.properties
根据外部化配置的留档,我想应该是https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html
root@foobar:~/#java-jar~/foo.jar--spring.config.location=file:~/sheets.properties
或
root@foobar:~/#java-jar~/foo.jar--spring.config.additional位置=file:~/sheets.properties
或
root@foobar:~/#java-jar~/foo.jar--spring-config-name=应用程序,工作表--spring.config.location=file:~/
但每次:
2021-03-08 20:51:13,598 ERROR [org.springframework.boot.SpringApplication] Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [foo.Main]; nested exception is java.io.FileNotFoundException: class path resource [sheets.properties] cannot be opened because it does not exist
...
Caused by: java.io.FileNotFoundException: class path resource [sheets.properties] cannot be opened because it does not exist
如果资源与jar一起打包,那么一切都可以正常工作,但凭证信息显然应该外部化。
在包含spring boot的外部属性和资源时,我忽略了什么?
尝试以下操作
<代码>root@foobar:~/#java-jar ~/foo。jar——Spring。配置。名称=图纸。属性
默认情况下,Spring Boot会根据配置文件的位置覆盖它们。但是默认情况下,它会尝试将名称为
application.properties
或application.yml
的文件加载为属性文件。因为您有一个自定义属性文件,所以必须声明它。
至于文件位置。外部配置文件覆盖内部文件。因此,如果您的资源中有jar a<代码>表。属性当前目录中的外部文件将覆盖它。你不需要任何特殊的财产。
因此,如果您使用上述命令执行Jar,您当前目录中的属性文件将被加载。
查看以下链接以了解如何应用外部化配置,以及spring boot在默认情况下尝试从哪些目录加载属性。
Spring引导外部化属性
在类中使用属性文件的绝对路径,如下所示:
@PropertySource("file:${FOO_PATH}sheets.properties")
然后在启动应用程序时设置其值:
java-jar-DFOO\u路径=/your/project/PATH/~/foo。jar
在windows上使用路径分隔符。
Generators 相关文章 The Basics Of ES6 Generators By Kyle Simpson ES6 generators in depth By Axel Rauschmayer redux-saga 相关文章 Redux nowadays : From actions creators to sagas By Riad Benguella Managing Side
全局配置 在 nuxt.config.js 中配置你想引用的资源文件: module.exports = { head: { script: [ { src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js' } ], link: [ { rel: 'style
此页面包含来自 Booyant 和 linkerd 用户的关于 linkerd 的博客和谈话。 通过 Buoyant的博客 查看更多的帖子! 注: 详细列表请见原文(没有翻译的必要): https://linkerd.io/overview/external-resources/
在springboot应用程序中,我有一个jar,然后是一个子目录config with application。属性,applicationContext。xml和log4j。。。属性文件。 我正在尝试外部化log4j配置。application.properties是这样外部化的。 但是,当springboot运行时,它使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选
问题内容: 到目前为止,直到未模块化的Java,您只需将文件放入以确保它位于类路径中,然后使用 从classpath的几乎任何地方开始。 现在有了模块,地块变厚了。 我的项目设置如下: 配置文件放在里面。 项目运行于 由于主类不是位于我自己的项目中,而是位于外部框架模块中,因此看不到。现在的问题是,是否有办法以某种方式将我的配置文件放入模块或打开它?我是否必须更改框架上游加载文件的方式? 我尝试在
我的项目设置如下: 配置文件放在中。 运行项目时使用 如何以最佳实用的方式实现这一点,使它能够像在Java8中一样工作,并且尽可能少的改动?