Spring cloud config Can';t在Spring云配置服务器中使用@Value和@Autowired属性
我有一个SpringBoot 1.5.12应用程序,使用Edgware.SR3 Spring云版本。 以下代码:Spring cloud config Can';t在Spring云配置服务器中使用@Value和@Autowired属性,spring-cloud-config,Spring Cloud Config,我有一个SpringBoot 1.5.12应用程序,使用Edgware.SR3 Spring云版本。 以下代码: @Configuration public class HmlConfig { @Value("${jms.destination.name}") ... } ... @RestController @RequestMapping("/api") public class HmlRestController { @Autowired private Jms
@Configuration
public class HmlConfig
{
@Value("${jms.destination.name}")
...
}
...
@RestController
@RequestMapping("/api")
public class HmlRestController
{
@Autowired
private JmsTemplate jmsTemplate;
...
}
引发以下异常:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jms.destination.name' in value "${jms.destination.name}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
以下是我的bootstrap.yml内容:
spring:
application:
name: hml-core
profiles:
active:
default
cloud:
config:
uri: http://localhost:8888/hml
转到将正确显示属性。我遗漏了什么吗?根据您的日志,您的客户端无法访问配置服务器,这就是为什么无法插入字段
jms.destination.name
添加客户端的完整堆栈跟踪将很有帮助您是否碰巧在某个地方设置了
spring.main.sources
我们遇到了同样的问题,删除这一行有助于我们。似乎在bootstrap.yml中包含此选项会妨碍应用程序连接到云配置服务器。这会导致缺少道具
在配置服务器端使用
spring.main.sources
param也会导致服务器端异常。请参见我正在用上次测试的结果更新这篇文章。似乎在每个模块中包含maven依赖项可以解决问题,然后按照预期找到配置。
在我最初的设计中,我有一个父POM,它分解了所有spring引导依赖项,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-rsa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
org.springframework.cloud
spring云依赖关系
Camden.SR5
聚甲醛
进口
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
org.springframework.cloud
spring云配置服务器
org.springframework.cloud
SpringCloudStarter配置
org.springframework.cloud
spring云配置客户端
org.springframework.security
spring security rsa
org.springframework.boot
springbootstarteractivemq
org.springframework.boot
弹簧起动试验
测试
这样,配置客户端就找不到配置服务器,并引发所提到的异常。修改父POM以仅包括DependencyManager,如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-rsa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
org.springframework.cloud
spring云依赖关系
Camden.SR5
聚甲醛
进口
并在配置服务器POM中移动依赖项,如下所示:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-rsa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
org.springframework.cloud
spring云配置服务器
org.springframework.cloud
SpringCloudStarter配置
在配置客户端中,如下所示:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-rsa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧靴起动器执行器
org.springframework.cloud
SpringCloudStarter配置
org.springframework.cloud
spring云配置客户端
org.springframework.security
spring security rsa
org.springframework.boot
springbootstarteractivemq
org.springframework.boot
弹簧起动试验
测试
完全解决了问题,一切正常。我对此没有任何解释,因为在父POM中包含所有公共依赖项应该与在每个单独模块中包含它们具有完全相同的效果。在我看来,这显示了弹簧靴和弹簧云的一些不稳定性和奇怪的行为。我没有时间去挖掘更多的东西,去了解发生了什么。无论如何,考虑到这类问题,以及缺乏任何支持,包括在这个网站上,我们从春天开始。
但如果有人对此有任何解释,我仍然有兴趣知道。
亲切问候,,
尼古拉斯这里的人们似乎更关心重新编排问题的格式,而不是回答问题。我已经在这个论坛上发布了一段时间了,我从来没有得到一个关于我的问题的恰当答案。不过,我的未回答问题现在格式很好。感谢您抽出时间回答我的帖子。是的,我知道客户端无法访问配置服务器,这正是我在文章中解释的。问题是,为了让客户机能够访问配置服务器,为什么需要这样做,以及需要做什么。你知道吗?如果是,请毫不犹豫地告诉我。如果没有,再次感谢您的参与。在任何情况下,堆栈跟踪都清楚地表明找不到给定的属性。如果我将其添加到本地属性文件中,就会找到它。如前所述,配置服务器工作正常,因为我能够显示属性。添加完整的stacktrace将帮助其他人在失败时进行检测。客户端完成的第一件事是连接到配置服务器,如果失败,stacktrace会显示原因(例如未授权、未找到或其他)。其次,也许您应该考虑添加您的客户机依赖项。任何信息都有助于解决问题。最后,我可以确定具有以下依赖关系:
code
org.springframework.cloud父POM中的spring云配置服务器会引发“java.lang.IllegalArgumentException:无法解析占位符…”。只需将异常从父POM移动到配置服务器模块POM,异常就会消失,一切都会按预期进行。一团糟!