SpringBoot (7) -hot de carga y despliegue de empaque

La implementación en caliente no se utilizará en un entorno de producción, pero sigue siendo útil para la eficiencia del desarrollo del programador. La llamada implementación en caliente es implementar nuevas implementaciones sin detener las aplicaciones. Cuando comenzamos a aprender el marco SSM, configuramos manualmente Tomcat nosotros mismos y también podemos configurar directamente la carga en caliente. Entonces, ¿cómo debería configurarse en Spring Boot?


Primero necesitamos agregar una dependencia, de la siguiente manera:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

spring-boot-devtools es un módulo para desarrolladores. Su principio profundo es usar dos ClassLoaders, un Classloader para cargar clases que no cambiarán (como paquetes Jar de terceros) y el otro ClassLoader para cargar clases que cambiarán. , Se llama reiniciar ClassLoader, de
modo que cuando hay un cambio de código, se descarta el reinicio original ClassLoader y se vuelve a crear un reinicio ClassLoader. Debido a que hay menos clases para cargar, se logra un tiempo de reinicio más rápido.


Cabe señalar aquí que si hemos integrado plantillas Thymeleaf o plantillas FreeMarker en el proyecto, entonces tenemos que realizar ajustes relevantes en el archivo de configuración

spring.thymeleaf.cache = false
spring.freemarker.cache = false



Hasta ahora, si estamos usando Eclipse, entonces está bien, pero si estamos usando IDEA, entonces tenemos que hacer algunas configuraciones relacionadas, porque IDEA no se guarda y modifica, es decir, no en IDEA El código se volverá a compilar debido a Ctrl + S.


En IDEA, también necesitamos agregar un complemento de compilación en el archivo pom, de modo que cuando el código cambie, también se compile
Inserte la descripción de la imagen aquí

De esta manera, podemos completar manualmente la carga en caliente en IDEA, ¿por qué es la carga en caliente manual? Porque aquí modificamos el código, presionamos la tecla de acceso directo Ctrl + F9, compilamos manualmente el proyecto o solo modificamos un archivo de clase, presionamos Ctrl + Shift + F9, vuelva a compilar este tipo de archivo, puede activar el reinicio del servicio.


Tal vez piense que esto es demasiado problema, entonces, ¿puede cargar en caliente automáticamente? Por supuesto que es posible, pero también debemos realizar algunas configuraciones en IDEA, de la siguiente manera:
Inserte la descripción de la imagen aquí


Luego presione la tecla de acceso directo Ctrl + Shift + Alt + /, seleccione 1.Registro ..., verifique compiler.automake.allow.when.app.running.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí




Finalmente, echemos un breve vistazo al problema del empaquetado y la implementación del proyecto. Si queremos empaquetar un proyecto para la implementación, si queremos llegar a un paquete jar, primero debemos agregar la configuración relevante en el archivo pom y luego empaquetarlo a través de Maven.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>



Pero si no desea utilizar el tomcat incorporado y desea implementarlo en otros servidores Tomcat, debe usar el paquete war para implementarlo. Luego, primero tenemos que modificar la forma de empaquetado en el archivo pom
Inserte la descripción de la imagen aquí


Luego, es mejor que eliminemos el soporte integrado de Tomcat para evitar conflictos con Tomcat externo

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>
<!--
    scope值的作用范围:
        compile:默认值,适用于所有阶段,并且会随着项目直接发布
        provided:编译和测试阶段有效,并且在运行时由服务器提供
        runtime:运行时使用,对测试和运行有效,如jdbc
        test:只在测试时使用,在编译和运行时不起作用,不发项目不起作用
        system:不依赖maven仓库解析,需要提供依赖的显示路径,对项目的移植来说很不方便
-->

Finalmente, también necesitamos modificar la clase de inicio de SpringBoot para heredar de
org.springframework.boot.web.servlet.support.SpringBootServletInitializer y reescribir el método de configuración
Inserte la descripción de la imagen aquí

286 artículos originales publicados · Me gusta12 · Visitantes 10,000+

Supongo que te gusta

Origin blog.csdn.net/newbie0107/article/details/105421660
Recomendado
Clasificación