我有一个使用配置文件属性文件的spring boot 1.5.1项目。在我的/ src / main / resources中,我有我的所有属性文件
使用IntelliJ 2016.3.4时,我设置了
运行配置|活动档案
到“本地”并运行它。我在控制台中看到了这一点:
以下个人资料有效:本地
但是属性文件中有一个值
data.count.users=2
用作:
@Value("${data.count.users}")
private int userCount;
未被拾取并因此导致错误:
引起:java.lang.IllegalArgumentException:无法解决 占位符'data.count.users'在字符串值“$ {data.count.users}”
中
但是,如果我通过gradle运行
bootRun {
systemProperty 'spring.profiles.active', System.properties['spring.profiles.active'] }
as
gradle bootRun -Dspring.profiles.active = local
然后一切都按预期使用本地配置文件启动。任何人都可以看到为什么这个没有被正确拿起?在IntelliJ项目结构中,我将/ src / main / resources定义为我的资源文件夹。
更新:
答案 0 :(得分:3)
我可能在这里错了,但看起来6 Lines
环境变量实际上并未在您的配置中设置,无论您选择哪种活动配置文件。这可能是IntelliJ的错误。
但是,在运行中设置环境变量 - >编辑配置绝对适用于我。
答案 1 :(得分:2)
resources
的类路径是否正确,即它是否包含application.properties
所显示的Jenkinsfile
文件夹?答案 2 :(得分:0)
这也可能是由于非标准配置设置所致,例如:
src/main/resources
├── application.properties
├── config1
│ ├── application-dev.properties
│ ├── application-prod.properties
│ ├── application.properties
│ └── logback-spring.xml
├── config2
│ ├── application-dev.properties
│ ├── application-prod.properties
│ ├── application.properties
│ └── logback-spring.xml
└── config3
├── application-dev.properties
├── application-prod.properties
├── application.properties
└── logback-spring.xml
这可以通过分别为logback和spring传递参数logging.config
和spring.config.name
来解决。对于上面的示例:
java -jar \
-Dspring.profiles.active=dev \
-Dlogging.config=classpath:config1/logback-spring.xml \
-Dspring.config.name=application,config1/application \
target/my-application.0.0.1.jar
在这里使用根application.properties
,由config1/application.properties
覆盖,由config1/application-dev.properties
覆盖。可以在VM Options
的IDEA的运行配置中指定参数(环境变量)。
就高级IDE支持(突出显示,完成等)而言,复杂/自定义配置设置存在一个未解决的问题:IDEA-180498