[SpringBoot] Encapsule su propio iniciador desde cero e introdúzcalo en otros proyectos para su uso

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.

inserte la descripción de la imagen aquí

2. Crear META-INF/spring.factories

Elimine la carpeta de prueba y cree el archivo resources/META-INF/spring.factories en el directorio principal
inserte la descripción de la imagen aquí

Elimine el programa principal también, nuestro motor de arranque no necesita iniciarse

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

5. Usa el motor de arranque

Abra nuestro repositorio maven local

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí
¡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.

Supongo que te gusta

Origin blog.csdn.net/qq_51383106/article/details/131787861
Recomendado
Clasificación