如何使用注释自动连接RestTemplate
当我尝试自动装配Spring RestTemplate时,出现以下错误:
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.web.client.RestTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.
在注释驱动的环境中使用Spring 4。
我的调度程序servlet的配置如下:
<context:component-scan base-package="in.myproject" /><mvc:default-servlet-handler />
<mvc:annotation-driven />
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/>
我尝试自动连接RestTemplate的类如下:
@Service("httpService")public class HttpServiceImpl implements HttpService {
@Autowired
private RestTemplate restTemplate;
@Override
public void sendUserId(String userId){
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("userId", userId);
map.add("secretKey", "kbhyutu7576465duyfy");
restTemplate.postForObject("http://localhost:8081/api/user", map, null);
}
}
回答:
如果RestTemplate
未定义错误,则会看到错误
考虑在配置中定义类型为“ org.springframework.web.client.RestTemplate”的bean。
要么
找不到类型为[org.springframework.web.client.RestTemplate]的合格Bean
如何定义RestTemplate
通孔注释
取决于你使用的技术以及哪种版本会影响你RestTemplate在@Configuration课堂上定义a 的方式。
没有Spring Boot的Spring> = 4
只需定义一个@Bean
:
@Beanpublic RestTemplate restTemplate() {
return new RestTemplate();
}
Spring Boot <= 1.3
无需定义一个,Spring Boot会自动为你定义一个。
Spring Boot >= 1.4
Spring Boot不再自动定义一个RestTemplate
,而是定义一个RestTemplateBuilder
允许你对RestTemplate
创建的对象进行更多控制的控件。你可以RestTemplateBuilde
r在@Bean
方法中注入作为参数来创建一个RestTemplate
:
@Beanpublic RestTemplate restTemplate(RestTemplateBuilder builder) {
// Do any additional configuration here
return builder.build();
}
在课堂上使用它
@Autowiredprivate RestTemplate restTemplate;
or
@Injectprivate RestTemplate restTemplate;
以上是 如何使用注释自动连接RestTemplate 的全部内容, 来源链接: utcz.com/qa/416067.html