Spring-boot-devtools usados em SpringBoot não podem ser aplicados ao ambiente de produção

índice

Descrição do parâmetro relacionado à configuração do escopo Maven

Configuração obsoleta do Spring-boot-devtools


Como o título: Este problema é a introdução da produção durante o desenvolvimento. Se houver um bug no programa, spring-boot-devtools terá um processo de reinicialização de aplicativo semelhante ao lançar uma exceção não tratada (ao modificar uma classe, você pode veja os devtools no local (O ambiente de desenvolvimento fechará o aplicativo e reiniciará), fazendo com que a fonte de dados seja encerrada. Aqui estão dois problemas que devem ser observados na produção:

  • try {} finlly {} não tem pegadinhas, o que causará sérias exceções de engolir
  • O plug-in hot deployment spring-boot-devtools é usado no projeto, o que faz com que o aplicativo seja reiniciado em condições anormais (a fonte de dados Druid está fechada neste momento e a atualização não pode mais ser realizada)

Descrição do parâmetro relacionado à configuração do escopo Maven

A seguinte referência de conteúdo: https://maven.apache.org/pom.html

escopo : Este elemento se refere ao caminho de classe da tarefa em questão (compilação e tempo de execução, teste, etc.) e como restringir a transitividade das dependências. Existem cinco escopos:

  • compilar -Este é o escopo padrão, usado se não for especificado. As dependências de compilação estão disponíveis em todos os caminhos de classe. Além disso, essas dependências são propagadas para projetos relacionados.
  • fornecido - É muito parecido com a compilação, mas indica que você deseja que o JDK ou contêiner forneça no tempo de execução. Ele está disponível apenas no caminho de classe de compilação e teste e não é transferível.
  • runtime -Este escopo indica que a dependência não é necessária para a compilação, mas necessária para a execução. Ele está no tempo de execução e no caminho de classe de teste, mas não no caminho de classe de compilação.
  • test -Este intervalo indica que a dependência não é necessária para o uso normal do aplicativo, e só está disponível durante a fase de compilação e execução do teste. Não é transitivo.
  • sistema - Este escopo é semelhante, providedexceto que um JAR que o contém explicitamente deve ser fornecido. O artefato está sempre disponível e não será encontrado no repositório.

 Nota: Conhecer o escopo é definitivamente bom para usarmos o maven.

Configuração obsoleta do Spring-boot-devtools

 <!-- 本地热部署插件:慎用-容易导致应用重启数据丢失 -->
       <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.2.1.RELEASE</version>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>-->

Através do entendimento do tipo de configuração do escopo, sabemos que o runtime será executado durante a execução do programa, o que também satisfaz a condição de sobrecarga automática da classe quando o devtools é modificado ou lança uma exceção.

No ambiente de produção real, podemos definir o escopo como fornecido, e é por isso que vemos muitos exemplos de estruturas de código aberto usando o domínio fornecido.

 

Acho que você gosta

Origin blog.csdn.net/boonya/article/details/114144276
Recomendado
Clasificación