【问题标题】:Autowiring RestTemplate causes "argument type mismatch" when including Eureka包含 Eureka 时,自动装配 RestTemplate 会导致“参数类型不匹配”
【发布时间】:2016-06-14 01:37:53
【问题描述】:

添加后

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

对于我的依赖项,我得到以下异常

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [example.nagios.notificationmanager.core.nagiosapi.NagiosAPIService]: Illegal arguments for constructor; nested exception is java.lang.IllegalArgumentException: argument type mismatch
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:158)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:267)
    ... 24 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
    ... 26 more

所以使用下面的构造函数创建服务失败

@Autowired
public NagiosAPIService(@Value("${nagios.state.uri}") String nagiosStateUri,
    @Qualifier("systemAuthorized") RestTemplate restTemplate, NagiosCheckService nagiosCheckService) {

    this.nagiosStateUri = nagiosStateUri;
    this.restTemplate = restTemplate;
    this.nagiosCheckService = nagiosCheckService;
}

我一个接一个地删除了一个参数,是 RestTemplate 导致了错误。

在我的依赖项中没有 spring-cloud-starter-eureka 一切正常。 谁能告诉我为什么尤里卡会导致这个错误?

【问题讨论】:

    标签: java spring spring-boot spring-cloud netflix-eureka


    【解决方案1】:

    我认为只是有一些(可选,但如果您使用该启动器,则默认情况下处于活动状态)自动配置来监控指标的其余模板使用情况。您可能仍然可以自动连接 RestOperations,或设置 spring.aop.proxy-target-class=true 以使其按原样工作。

    【讨论】:

    • 是否为此记录了问题?只需使用 spring-cloud-starter-consul-discovery:1.0.0.M6 打同样的事情
    • 记录了一些问题。在最新的快照中,您应该会发现 spring.aop.proxy-target-class=true 默认情况下不会出现。
    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 2022-09-23
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多