Spring yaml在aws服务器上不起作用

时间:2017-07-27 14:09:03

标签: spring-boot yaml

我有一个带有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;

我做错了什么?

1 个答案:

答案 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