Saltar al contenido

DispatcherServlet y web.xml en Spring Boot

Luego de de nuestra prolongada recopilación de datos hemos podido solucionar esta contratiempo que tienen muchos los usuarios. Te ofrecemos la solución y deseamos resultarte de mucha apoyo.

Solución:

  1. Sí, Spring Boot ya no depende de la configuración xml y configura automáticamente un equivalente al servlet del despachador. Puede seguir el siguiente enlace para ver cómo registrar sus filtros: ¿Cómo agregar una clase de filtro en Spring Boot?
  2. Si usa maven y no gradle, el único XML en su proyecto de arranque de primavera debería ser pom.xml. El camino a seguir con el arranque de primavera es mover toda su configuración xml, web.xml, etc. a la configuración automática de arranque de primavera + su configuración de Java.

Spring boot funciona muy bien cuando haces todo en la configuración de Java y sigues sus principios. Desde mi experiencia con él, cuando comienzas a fusionar la configuración XML y el resorte heredado, comienza a romper el proceso de configuración automática y es mucho mejor intentar todo lo que puedas para cumplir con las nuevas mejores prácticas de arranque de resorte.

  1. Puedes mantener tu web.xmlpero necesita agregar

    
         org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener
     
    

    en web.xml. Y, dependencia requerida de pom.xml.

  2. Todas las clases de oyentes, los filtros se convierten en la clase Java. esta clase seria @Configuration.

  3. Si tiene un interceptor, puede moverlo a la clase de configuración.

Spring-boot prefiere anotaciones sobre xml configuraciones basadas, por lo que en su caso en lugar de usar web.xml para configurar el servlet, servlet-mapping, filter y filter mappingpuede usar creaciones automáticas de beans basadas en anotaciones para registrar beans. Para eso necesita:

  • Convierta las asignaciones basadas en xml en asignaciones basadas en anotaciones
  • Crear frijoles usando @Bean anotaciones para que spring-boot las tome automáticamente durante el escaneo de componentes.

Para referencia: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

  • Para registrar filtros y agregar frijoles de filtro puedes crear una clase y anotarla con el @Configuration o @Component anotación y crear bean de FilterRegistrationBean para registrar el filtro. También puede crear los beans del filtro usando la anotación @Bean.

Por ejemplo, el equivalente del siguiente filtro basado en xml


  SomeUrlFilter
   com.company.SomeUrlFilter


    SomeUrlFilter
    /url/*
    
       paramName
       paramValue
    

La base de anotación equivalente será:

@Bean
public FilterRegistrationBean someUrlFilterRegistration() 

    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(someUrlFilter());
    registration.addUrlPatterns("/url/*");
    registration.addInitParameter("paramName", "paramValue");
    registration.setName("Filter");
    registration.setOrder(1);
    return registration;
 

@Bean(name = "someUrlFilter")
public Filter someUrlFilter() 
    return new SomeUrlFilter();

  • Springboot todavía nos permite usar las configuraciones basadas en xml, por ejemplo, si desea usar el web.xml .Por ejemplo :

Web.xml


    dispatcher
    org.springframework.web.servlet.DispatcherServlet
    
        contextConfigLocation
        /WEB-INF/spring/dispatcher.xml
    
    1



    dispatcher
    /

y en otro archivo despachador.xml puedes crear beans como:



    

    
        
        
    

Tenga en cuenta que la primavera web.xml normalmente vivirá en src/main/webapp/WEB-INF.

Puede consultar: https://www.baeldung.com/register-servlet

Recuerda que puedes difundir este enunciado si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *