Notas de estudio @ 玩转 Spring 全家 斗
El contenido del curso proviene del tiempo geek jugando Spring Family Bucket, invadido y eliminado , el enlace es el siguiente
https://time.geekbang.org/course/intro/100023501
Capitulo seis
SpringMVCController
Conoce SpringMVC
El núcleo de SpringMVC es DispatcherServlet, que es un punto de entrada para todas las solicitudes
La
lógica de procesamiento del controlador (solicitud) del componente principal en
DispatcherServlet XXXResolver resolver
solicitud HandlerMapping y asignación de controlador
Anotación @ común
@RequestBody Cuerpo del mensaje de solicitud
@ResponseBody Cuerpo del mensaje de
respuesta @ResponseStatus Código de respuesta
código
Clase CoffeeController
package geektime.spring.springbucks.waiter.controller;
import geektime.spring.springbucks.waiter.model.Coffee;
import geektime.spring.springbucks.waiter.service.CoffeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("/coffee")
public class CoffeeController {
@Autowired
private CoffeeService coffeeService;
@GetMapping("/")
@ResponseBody
public List<Coffee> getAll() {
return coffeeService.getAllCoffee();
}
}
Puede ver anotaciones de mapeo como RequestMapping, que se pueden escribir en la declaración de la clase o en la declaración del método; en la clase, significa que toda la clase del controlador debe agregarse a la solicitud de mapeo, que es equivalente al prefijo
y la declaración sobre el método. Solo la solicitud de este método,
específicamente, el método getAll () requiere que la solicitud de / coffee y / se asigne a este método
Hay dos anotaciones @Controller y @ResponseBody en esta clase, que se pueden escribir como la anotación @RestController
CoffeeOrderController 类
package geektime.spring.springbucks.waiter.controller;
import geektime.spring.springbucks.waiter.controller.request.NewOrderRequest;
import geektime.spring.springbucks.waiter.model.Coffee;
import geektime.spring.springbucks.waiter.model.CoffeeOrder;
import geektime.spring.springbucks.waiter.service.CoffeeOrderService;
import geektime.spring.springbucks.waiter.service.CoffeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/order")
@Slf4j
public class CoffeeOrderController {
@Autowired
private CoffeeOrderService orderService;
@Autowired
private CoffeeService coffeeService;
@PostMapping("/")
@ResponseStatus(HttpStatus.CREATED)
public CoffeeOrder create(@RequestBody NewOrderRequest newOrder) {
log.info("Receive new Order {}", newOrder);
Coffee[] coffeeList = coffeeService.getCoffeeByName(newOrder.getItems())
.toArray(new Coffee[] {
});
return orderService.createOrder(newOrder.getCustomer(), coffeeList);
}
}
Puede ver la lógica del programa. Enviar una solicitud de publicación a la solicitud / order / combinación. El contenido de la solicitud es la cadena y la lista definidas en NewOrderRequest. El código de estado especificado es HttpStatus.CREATED y el sistema es 201
NewOrderRequest clase
package geektime.spring.springbucks.waiter.controller.request;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
@Getter
@Setter
@ToString
public class NewOrderRequest {
private String customer;
private List<String> items;
}
Herramientas recomendadas
Cartero
https://www.postman.com/downloads/