springboot controller调用controller
时间: 2023-05-08 13:58:41 浏览: 857
在Spring Boot中,Controller之间的调用可以通过注入调用或使用RestTemplate进行 HTTP 请求调用两种方式实现。
1. 注入调用:在Controller类中注入其他Controller类的实例,即可在当前Controller类中调用其他Controller中的接口。注入方式一般通过@Autowired或@Resource注解实现。例如:
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private OrderController orderController;
@GetMapping("/{userId}/order")
public String getUserOrder(@PathVariable Long userId) {
String order = orderController.getOrder(userId);
return "User: " + userId + ", Order: " + order;
}
}
```
2. HTTP请求调用:在Controller中使用RestTemplate实现HTTP请求调用其他Controller中的接口。RestTemplate是Spring框架提供的基于HTTP协议的客户端工具,可以用来调用RESTful服务。例如:
```java
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/{userId}")
public String getOrder(@PathVariable Long userId) {
String userUrl = "http://localhost:8080/user/" + userId;
String user = restTemplate.getForObject(userUrl, String.class);
return "Order for User " + user;
}
}
```
需要注意的是,如果在同一个Spring Boot应用程序中,使用注入调用需要确保被注入的Controller类被声明为bean,否则会出现NullPointerException异常;而使用HTTP请求调用可以直接调用其他Controller类的接口,无需担心依赖关系。