... 中的构造函数的参数 0 需要找不到类型 'org.springframework.web.client.RestTemplate' 的 bean
Parameter 0 of constructor in ... required a bean of type 'org.springframework.web.client.RestTemplate' that could not be found
我无法 运行 我从中学习的应用程序 link 'https://developers.ascendcorp.com/สร้าง-microservices-ด้วย-netflix-oss-และ-spring-cloud-2678667d9dbc'
当我 运行 应用程序时,它显示“com.krittawat.productservice.controller.ProductController 中构造函数的参数 0 需要找不到类型 'org.springframework.web.client.RestTemplate' 的 bean。' 在终端中。
我的代码:
控制器:
package com.krittawat.productservice.controller;
import com.krittawat.productservice.model.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping(value = "products")
public class ProductController {
private final RestTemplate restTemplate;
@Autowired
public ProductController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@GetMapping("/search")
public Product getProductsByTypeAndName(@RequestParam(value = "sku") final String sku) {
String url = "http://PRICING-SERVICE/products/price?sku=" + sku;
return restTemplate.getForObject(url, Product.class);
}
}
型号:
package com.krittawat.productservice.model;
import lombok.Data;
@Data
public class Product {
private String sku;
private String price;
}
主要应用:
@SpringBootApplication
@EnableDiscoveryClient
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}
在Configurationclass中创建一个Rest模板的bean如下图
@Bean public RestTemplate restTemplate(){ return new RestTemplate(); }
然后在任何你想使用它的地方自动装配它。
@Autowired
private RestTemplate restTemplate;
Rest 模板 用于创建使用 RESTful Web 服务的应用程序。您应该为 Rest 模板声明一个 Bean 以自动连接 Rest 模板对象:
@Configuration
public class RestClientConfiguration {
// First Method: default
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
// Second Method: Using RestTemplateBuilder
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
您也可以在 SpringBootApplication 中声明它 class:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
我无法 运行 我从中学习的应用程序 link 'https://developers.ascendcorp.com/สร้าง-microservices-ด้วย-netflix-oss-และ-spring-cloud-2678667d9dbc'
当我 运行 应用程序时,它显示“com.krittawat.productservice.controller.ProductController 中构造函数的参数 0 需要找不到类型 'org.springframework.web.client.RestTemplate' 的 bean。' 在终端中。
我的代码: 控制器:
package com.krittawat.productservice.controller;
import com.krittawat.productservice.model.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping(value = "products")
public class ProductController {
private final RestTemplate restTemplate;
@Autowired
public ProductController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@GetMapping("/search")
public Product getProductsByTypeAndName(@RequestParam(value = "sku") final String sku) {
String url = "http://PRICING-SERVICE/products/price?sku=" + sku;
return restTemplate.getForObject(url, Product.class);
}
}
型号:
package com.krittawat.productservice.model;
import lombok.Data;
@Data
public class Product {
private String sku;
private String price;
}
主要应用:
@SpringBootApplication
@EnableDiscoveryClient
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}
在Configurationclass中创建一个Rest模板的bean如下图
@Bean public RestTemplate restTemplate(){ return new RestTemplate(); }
然后在任何你想使用它的地方自动装配它。
@Autowired
private RestTemplate restTemplate;
Rest 模板 用于创建使用 RESTful Web 服务的应用程序。您应该为 Rest 模板声明一个 Bean 以自动连接 Rest 模板对象:
@Configuration
public class RestClientConfiguration {
// First Method: default
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
// Second Method: Using RestTemplateBuilder
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
您也可以在 SpringBootApplication 中声明它 class:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}