Spring Boot personaliza Spring MVC

Spring Boot abandona los archivos de configuración xml tradicionales y configura configuraciones relacionadas en forma de JavaBean a través de clases de configuración (clases marcadas con @Configuration, que son equivalentes a un archivo de configuración xml).

La configuración automática de Spring MVC de Spring Boot puede satisfacer la mayoría de nuestras necesidades, pero también podemos personalizar la configuración de Spring MVC personalizando la clase de configuración (clase marcada como @Configuration) e implementando la interfaz WebMvcConfigurer, como interceptores, formateadores, controladores de vista y más. .
SpringBoot 1.5 y anteriores personalizaron la configuración de Spring MVC al heredar la clase abstracta WebMvcConfigurerAdapter, pero después de SpringBoot 2.0, la clase abstracta WebMvcConfigurerAdapter quedó obsoleta y, en su lugar, implementó la interfaz WebMvcConfigurer para personalizar la configuración de Spring MvVC.

WebMvcConfigurer es una interfaz basada en Java 8 que define muchos métodos relacionados con Spring MVC, la mayoría de los cuales son de tipo predeterminado y todas son implementaciones vacías. Por lo tanto, solo necesitamos definir una clase de configuración para implementar la interfaz WebMvcConfigurer y reescribir los métodos correspondientes para personalizar la configuración de Spring MVC.
inserte la descripción de la imagen aquí

En el proyecto Spring Boot, podemos personalizar Spring MVC de las siguientes dos formas:

Ampliación de Spring MVC
para hacerse cargo por completo de Spring MVC

A continuación, presentamos estas dos formas de personalizar Spring MVC respectivamente.
Ampliación de Spring MVC
Si la configuración automática de Spring MVC de Spring Boot no puede satisfacer nuestras necesidades, también podemos personalizar una clase de configuración de tipo WebMvcConfigurer (implementando la interfaz WebMvcConfigurer) (etiquetada como @Configuration, pero no como clase de anotación @EnableWebMvc), para ampliar Spring MVC. Esto no solo conservará la configuración automática de Spring MVC de Spring Boot, disfrutará de la comodidad que brinda la configuración automática de Spring Boot, sino que también agregará una configuración personalizada de Spring MVC.
Ejemplo 1

  1. Cree un proyecto de Spring Boot llamado spring-boot-adminex y mueva los directorios css, fuentes, imágenes y js y los recursos estáticos en el sistema de gestión en segundo plano AdminEx al proyecto src/main/resources/static. La estructura del directorio es la siguiente mostrado a continuación.
    inserte la descripción de la imagen aquí

  2. En el paquete net.biancheng.www.config, cree una clase de configuración llamada MyMvcConfig e implemente la interfaz WebMvcConfigurer, reescriba el método addViewControllers(), el código es el siguiente.
    package net.biancheng.www.config;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.*;
    // Implemente la interfaz WebMvcConfigurer para ampliar las funciones de SpringMVC
    //@ EnableWebMvc No se haga cargo de SpringMVC
    @Configuration
    clase pública MyMvcConfig implementa WebMvcConfigurer { @Override public void addViewControllers(Registro de ViewControllerRegistry) { //Al acceder a "/" o "/index.html", vaya directamente al registro de la página de destino.addViewController ( "/ ").setViewName("iniciar"); registro.addViewController("/index.html").setViewName("iniciar"); } }






  3. Cree un controlador llamado IndexController en net.biancheng.www.controller, el código es el siguiente.
    paquete net.biancheng.www.controller;
    importar org.springframework.stereotype.Controller;
    importar org.springframework.web.bind.annotation.GetMapping;
    importar org.springframework.web.bind.annotation.PostMapping;
    importar org.springframework.web .bind.annotation.RequestMapping;
    @Controller
    clase pública IndexController { /**

    • Saltar a la página de destino
    • @return
      */
      @GetMapping(value = {“/login”})
      public String loginPage() { //Saltar a la página de inicio de sesión login.html return “login”; } }



  4. Mueva login.html (página de inicio de sesión) en AdminEx a src/main/resources/templates, la estructura es como se muestra a continuación.
    inserte la descripción de la imagen aquí

Figura 2: inicio de sesión.html

  1. Inicie Spring Boot, encontrará que "http://localhost:8080/login", "http://localhost:8080/" y "http://localhost:8080/index.html" pueden saltar a la página de inicio login.html, el resultado es el que se muestra a continuación.
    inserte la descripción de la imagen aquí

Figura 3: La página de destino (haga clic en la imagen para ver la imagen original)
para hacerse cargo por completo de Spring MVC
En algunos casos especiales, es posible que debamos abandonar toda la configuración automática de Spring MVC por parte de Spring Boot y tomar el control por completo de Spring MVC. En este punto, podemos personalizar una clase de configuración de tipo WebMvcConfigurer (implementando la interfaz WebMvcConfigurer) y marcar la anotación @EnableWebMvc en esta clase para hacerse cargo por completo de Spring MVC.

Nota: Después de que Spring MVC se haya asumido por completo, la configuración automática de Spring MVC de Spring Boot no será válida.
Ejemplo 2

  1. Marque @EnableWebMvc en la clase de configuración MyMvcConfig y no realice ningún cambio en otros archivos, el código es el siguiente.
    paquete net.biancheng.www.config;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.*;
    // Implemente la interfaz WebMvcConfigurer para ampliar la funcionalidad de SpringMVC
    @EnableWebMvc / / Tomar completamente el control de SpringMVC
    @Configuration
    clase pública MyMvcConfig implementa WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registro) { //Al acceder a "/" o "/index.html", vaya directamente al registro de la página de destino.addViewController ("/ ").setViewName("iniciar sesión"); registro.addViewController("/index.html").setViewName("iniciar sesión"); } }






  2. Inicie Spring Boot, ingrese "http://localhost:8080/" en la barra de direcciones del navegador para acceder a la página de inicio de sesión, el resultado es como se muestra en la figura a continuación.
    inserte la descripción de la imagen aquí

La página de inicio de sesión después de hacerse cargo por completo de Spring mvc
Figura 4: hacerse cargo por completo de Spring MVC para acceder a la página de inicio de sesión

  1. Ingrese "http://localhost:8080/css/style.css" en la barra de direcciones del navegador para acceder a la hoja de estilo css a la que se hace referencia en login.html, y el resultado es como se muestra en la figura a continuación.
    inserte la descripción de la imagen aquí

Toma de control completa del fallo de recursos estáticos de Spring mvc
Figura 2: Toma de control completa del acceso de Spring MVC a los recursos estáticos

Sabemos que Spring Boot puede acceder a archivos estáticos ubicados en la carpeta de recursos estáticos, que se define en la configuración automática predeterminada de Spring MVC de Spring Boot. Cuando asumimos por completo Spring MVC, la configuración predeterminada de Spring MVC de Spring Boot será los recursos estáticos en la carpeta de recursos estáticos informarán un error 404.

Supongo que te gusta

Origin blog.csdn.net/weixin_64842782/article/details/125106786
Recomendado
Clasificación