En Spring , WebApplicationInitializer es una interfaz y es una implementación de Servlet 3.0+ para configurar ServletContext mediante programación en comparación con la forma tradicional de hacerlo mediante el archivo web.xml . Esta interfaz se utiliza para iniciar aplicaciones web de Spring. WebApplicationInitializer registra un Spring DispatcherServlet y crea un contexto de aplicación web Spring. Tradicionalmente, las aplicaciones web de Java basadas en servlets usaban el archivo web.xml para configurar una aplicación web de Java. Desde Servlet 3.0, las aplicaciones web se pueden crear mediante programación a través de escuchas de contexto de Servlet.
Enfoque: basado en XML tradicional
En el enfoque tradicional, los desarrolladores de Spring que crean una aplicación web deberán registrar el DispatcherServlet de Spring. Por ejemplo, podemos tomar WEB-INF/web.xml , esto normalmente se haría de la siguiente manera:
XML
<servlet> <!-- Provide a Servlet Name --> <servlet-name>myDispatcherServlet</servlet-name> <!-- Provide a fully qualified path to the DispatcherServelt class --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <!-- Provide a Servlet Name that you want to map --> <servlet-name>myDispatcherServlet</servlet-name> <!-- Provide a url pattern --> <url-pattern>/gfg.com/*</url-pattern> </servlet-mapping>
Enfoque: basado en código con WebApplicationInitializer
A continuación se muestra la lógica de registro de DispatcherServlet equivalente, estilo WebApplicationInitializer:
public class CalculatorApplicationInitializer implements WebApplicationInitializer { // Method public void onStartup(ServletContext servletContext) throws ServletException { // Creating objects of XmlWebApplicationContext // class XmlWebApplicationContext webApplicationContext = new XmlWebApplicationContext(); webApplicationContext.setConfigLocation( "classpath:application-config.xml"); // Creating a dispatcher servlet object DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext); // Registering Dispatcher Servlet with Servlet // Context ServletRegistration .Dynamic myCustomDispatcherServlet = servletContext.addServlet( "myDispatcherServlet", dispatcherServlet); // Setting load on startup myCustomDispatcherServlet.setLoadOnStartup(1); // Adding mapping url myCustomDispatcherServlet.addMapping("/gfg.com/*"); } }
Entonces, ahora desarrollemos un proyecto completo de muestra y veamos cómo WebApplicationInitializer nos ayuda a construir una aplicación web Spring usando una configuración basada en Java.
Implementación: Proyecto que demuestra Spring WebApplicationInitializer
Paso 1: configurar el proyecto
Nota: Vamos a utilizar Spring Tool Suite 4 IDE para este proyecto. Consulte este artículo para instalar STS en su máquina local ¿Cómo descargar e instalar Spring Tool Suite (Spring Tools 4 para Eclipse) IDE?
Vaya a su STS IDE, luego cree un nuevo proyecto maven, Archivo> Nuevo> Proyecto Maven, y elija el siguiente arquetipo como se muestra en la imagen a continuación:
Paso 2: agregar algunas dependencias de Maven
Agregue las siguientes dependencias y complementos de Maven al archivo pom.xml .
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- plugin --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
A continuación se muestra el código completo para el archivo pom.xml después de agregar estas dependencias.
Archivo: pom.xml
XML
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.geeksforgeeks.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.geeksforgeeks</groupId> <artifactId>spring-calculator</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>spring-calculator Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>spring-calculator</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
Paso 3: enfoque basado en código con WebApplicationInitializer
Antes de pasar a la parte de codificación, echemos un vistazo a la estructura del archivo en la imagen de abajo.
Entonces, primero cree una carpeta src/main/java y dentro de esta carpeta cree una clase llamada CalculatorApplicationInitializer y colóquela dentro del paquete com.geeksforgeeks.calculator.config e implemente la interfaz WebApplicationInitializer . Consulte la imagen de abajo.
Ahora en esta clase, tenemos que realizar las siguientes 2 operaciones principales que se enumeran a continuación de la siguiente manera:
- Crear un objeto de servlet de despachador
- Registrar el servlet del despachador con el contexto del servlet
Y podemos hacerlo escribiendo estas líneas de código
Operación 1: crear un objeto de servlet de despachador:
XmlWebApplicationContext webApplicationContext = new XmlWebApplicationContext(); // Create a dispatcher servlet object DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);
Operación 2: registrar el servlet de despachador con contexto de servlet
ServletRegistration.Dynamic myCustomDispatcherServlet = servletContext.addServlet("myDispatcherServlet", dispatcherServlet);
- Vaya a src/main/resources y cree un archivo XML.
- Nombre el archivo como application-config y pegue el siguiente código dentro de este archivo.
Archivo: application-config.xml
XML
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.geeksforgeeks.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> </beans>
Y debajo está el código completo para el archivo CalculatorApplicationInitializer.java . Esta es la clase en la que hemos seguido el enfoque basado en código con WebApplicationInitializer.
Archivo: CalculatorApplicationInitializer.java
Java
// Java Program to Demonstrate Calculator Application // Initializer Class package com.geeksforgeeks.calculator.config; // Importing required classes import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.XmlWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; // Class // Implementing WebApplicationInitializer interface public class CalculatorApplicationInitializer implements WebApplicationInitializer { // Method public void onStartup(ServletContext servletContext) throws ServletException { XmlWebApplicationContext webApplicationContext = new XmlWebApplicationContext(); webApplicationContext.setConfigLocation( "classpath:application-config.xml"); // Creating a dispatcher servlet object DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext); // Registering Dispatcher Servlet with Servlet // Context ServletRegistration .Dynamic myCustomDispatcherServlet = servletContext.addServlet( "myDispatcherServlet", dispatcherServlet); // Setting load on startup myCustomDispatcherServlet.setLoadOnStartup(1); // Adding mapping url (Custom URL) myCustomDispatcherServlet.addMapping("/gfg.com/*"); } }
Paso 4: Crear controlador y probar la aplicación
Vaya a la carpeta src/main/java y dentro de esta carpeta cree una clase llamada GfgController y colóquela dentro del paquete / com.geeksforgeeks.calculator.controllers .
Archivo: GfgController.java
Java
// Java Program to Illustrate GfgController Class package com.geeksforgeeks.calculator.controllers; // Importing required classes import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; // Class @Controller public class GfgController { @RequestMapping("/welcome") @ResponseBody // Testor Method public String helloGfg() { return "Welcome to GeeksforGeeks!"; } }
Antes de ejecutar la aplicación, agregue las siguientes líneas al archivo application-config.xml .
<context:component-scan base-package="com.geeksforgeeks.calculator.controllers"></context:component-scan>
Archivo: aplicación-config.xml actualizado
XML
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.geeksforgeeks.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.geeksforgeeks.calculator.controllers"></context:component-scan> </beans>
Paso 5: Ejecute la aplicación
Por último, ejecute su aplicación Spring MVC y presione la siguiente URL
http://localhost:8080/spring-calculator/gfg.com/welcome
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA