SpringMVCController-Spring notas de estudio de la etapa 01

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/
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43596589/article/details/112857335
Recomendado
Clasificación