2016-03-01 3 views
1

После добавленияавтоматического связывание RestTemplate вызывает «тип аргумента несоответствие» при включении Eureka

<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 что вызывает ошибку.

Без весеннего облака-эврика в моих зависимостях все работает нормально. Может ли кто-нибудь сказать мне, почему эврика вызывает эту ошибку?

ответ

4

Я думаю, что для отслеживания использования шаблона останова используется некоторая (необязательная, но активная по умолчанию, если вы используете эту стартерную) автоконфигурацию. Возможно, вы все еще можете автоустанавливать RestOperations или установить spring.aop.proxy-target-class=true, чтобы заставить его работать как есть.

+0

Есть ли проблема, зарегистрированная для этого? Просто нажмите ту же самую вещь, используя spring-cloud-startter-consul-discovery: 1.0.0.M6 –

+0

Были зарегистрированы проблемы. В последних моментальных снимках по умолчанию вы должны найти 'spring.aop.proxy-target-class = true', поэтому он не возникнет. –

Смежные вопросы