Encapsule su propio iniciador desde cero e introdúzcalo en otros proyectos para su uso
Introducción
Este artículo presentará cómo empaquetar su propio iniciador desde cero e introducirlo en otros proyectos para su uso.
¿Por qué necesita empaquetar el arrancador usted mismo?
De esta manera, los iniciadores proporcionados por Spring y otros terceros se pueden volver a encapsular o parte del contenido que necesita se puede empaquetar para otros proyectos para mejorar la reutilización del código a nivel de proyecto.
1. Cree un nuevo proyecto de arranque de primavera
En primer lugar, necesitamos crear un nuevo proyecto Spring-Boot. Para evitar problemas de dependencia de Maven, no elegimos ningún componente proporcionado por Spring aquí. Si lo agrega, asegúrese de que el proyecto al que se hace referencia no tenga este componente . Además, no olvides cambiar la fuente maven.
2. Crear META-INF/spring.factories
Elimine la carpeta de prueba y cree el archivo resources/META-INF/spring.factories en el directorio principal
Elimine el programa principal también, nuestro motor de arranque no necesita iniciarse
3. Caso de prueba
A continuación, escriba un interceptor, intercepte todos los métodos e imprima algo de contenido para ver el efecto.
Primero elimine las cosas desordenadas en el archivo pom e introduzca un módulo web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Archivo de configuración
package com.ez4sterben.mytestspringbootstarter.config;
import com.ez4sterben.mytestspringbootstarter.interceptor.MyTestInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 我的测试web mvc配置
*
* @author ez4sterben
* @date 2023/07/18
*/
@Configuration
public class MyTestWebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyTestInterceptor())
.addPathPatterns("/**");
}
}
archivo interceptor
package com.ez4sterben.mytestspringbootstarter.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 我的测试拦截器
*
* @author ez4sterben
* @date 2023/07/18
*/
@Component
public class MyTestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("--------------------starter中的拦截器生效了!------------------------");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
Agregue el siguiente contenido al archivo spring.factories para habilitar la configuración automática
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ez4sterben.mytestspringbootstarter.config.MyTestWebMvcConfig
La estructura actual del proyecto es la siguiente
4. Paquete de inicio
Abra maven en el lado derecho de la idea y haga clic en instalar y empaquetar en el ciclo de vida
5. Usa el motor de arranque
Abra nuestro repositorio maven local
Nuestro iniciador ya tiene la forma de un paquete jar, y luego abriremos nuestros otros proyectos para hacer referencia a este iniciador.
<dependency>
<groupId>com.ez4sterben</groupId>
<artifactId>mytest-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Luego actualice el proyecto de inicio maven, solo busque una interfaz para probarlo
¡Prueba de éxito!
6. Resumen
Este artículo presenta un caso relativamente básico. Puede intentar encapsular su propio iniciador de esta manera, y el módulo web se ha introducido en el iniciador, por lo que no es necesario introducirlo en el proyecto que presenta el iniciador. De esta manera, el contenido básico que se corrige en muchos proyectos se puede encapsular, como valores de retorno generales, constantes básicas, clases de enumeración básicas y alguna autenticación unificada e intercepción de excepción unificada . Una vez que estos contenidos se configuran una vez, se pueden utilizar en varios proyectos.