如何使用注释自动连接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

@Bean

public RestTemplate restTemplate() {

return new RestTemplate();

}

Spring Boot <= 1.3

无需定义一个,Spring Boot会自动为你定义一个。

Spring Boot >= 1.4

Spring Boot不再自动定义一个RestTemplate,而是定义一个RestTemplateBuilder允许你对RestTemplate创建的对象进行更多控制的控件。你可以RestTemplateBuilder在@Bean方法中注入作为参数来创建一个RestTemplate

@Bean

public RestTemplate restTemplate(RestTemplateBuilder builder) {

// Do any additional configuration here

return builder.build();

}

在课堂上使用它

@Autowired

private RestTemplate restTemplate;

or

@Inject

private RestTemplate restTemplate;

以上是 如何使用注释自动连接RestTemplate 的全部内容, 来源链接: utcz.com/qa/416067.html

回到顶部