我有一个带有yaml的春季启动应用程序:
---
spring:
profiles: production
server:
port: 8080
servicesUrl:
aaa: aaa.aaa.aaa:9090
我使用gradle assemble创建jar。
当我在本地运行时:
java -Dspring.profiles.acitve=production -jar aaa.jar
一切运作良好。
我将jar scp到服务器,当我运行完全相同的命令时,我得到:
BeanCreationException: Error creating bean with name 'aaaController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'servicesUrl.aaa' in value "${servicesUrl.aaa}"
我必须声明根据配置文件(本地和AWS)提供不同的端口。
这是班上的一行:
@Value("${servicesUrl.aaa}")
private String aaaServiceUrl;
我做错了什么?
答案 0 :(得分:1)
您的YAML文件似乎有问题:
---
spring:
profiles: production
server:
port: 8080
servicesUrl:
aaa: aaa.aaa.aaa:9090
YAML仅接受2个空格缩进。如果您将缩进与\t
或4个空格混合,那么您的文件将无法正确解析。以下是您的YAML文件的外观:
---
spring:
profiles: production
server:
port: 8080
servicesUrl:
aaa: aaa.aaa.aaa:9090
你的java
命令中也有一个拼写错误(单词“acitve”):
java -Dspring.profiles.acitve=production -jar aaa.jar
它应该是:
java -Dspring.profiles.active=production -jar aaa.jar