Compartilhamento de tecnologia

JVM: SpringBoot TomcatEmbeddedWebappClassLoader

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Introdução

TomcatEmbeddedWebappClassLoader é um carregador de classes (ClassLoader) usado pelo Spring Boot em seu contêiner Tomcat incorporado. Em um aplicativo Spring Boot, quando você escolhe empacotar o aplicativo em um arquivo JAR ou WAR executável e deseja executar o aplicativo com um servidor Tomcat integrado, TomcatEmbeddedWebappClassLoader desempenha um papel fundamental.

Papéis e funções

  • Isolamento : TomcatEmbeddedWebappClassLoader fornece isolamento de carregamento de classe, o que significa que diferentes aplicativos Spring Boot (ou diferentes partes do aplicativo) podem ser executados na mesma JVM sem interferir no processo de carregamento de classe um do outro. Isto é útil para evitar problemas como conflitos de versão de classe.
  • Dinâmico: em um ambiente Tomcat incorporado, os aplicativos podem carregar e descarregar classes dinamicamente, o que é particularmente útil durante o desenvolvimento porque os desenvolvedores podem ver os efeitos das alterações no código em tempo real, sem reiniciar o servidor inteiro.
  • otimização: esse carregador de classe também é otimizado para minimizar o tempo de inicialização e o consumo de memória em tempo de execução, o que é fundamental para aplicativos de alto desempenho em ambientes de produção.

Relacionamento com Spring Boot
No mecanismo de configuração automática (autoconfiguração) do Spring Boot, quando for detectado que o aplicativo deve ser executado com o Tomcat incorporado, o Spring Boot configurará automaticamente o servidor Tomcat e selecionará o carregador de classe apropriado (como TomcatEmbeddedWebappClassLoader) para carregar o aplicativo. aulas e recursos.

plano alternativo
Embora TomcatEmbeddedWebappClassLoader seja a escolha padrão para o ambiente Tomcat incorporado do Spring Boot, o Spring Boot também oferece suporte a outros servidores incorporados, como Jetty e Undertow. Cada servidor possui sua própria implementação de carregador de classe para atender a diferentes necessidades e ambientes.

Precauções
Ao usar o Tomcat incorporado do Spring Boot, geralmente não há necessidade de interagir diretamente com o TomcatEmbeddedWebappClassLoader porque a configuração automática do Spring Boot tratará desses detalhes para você.
Se você encontrar problemas relacionados ao carregamento de classe (como classe não encontrada, conflitos de versão de classe, etc.), pode ser necessário verificar as dependências do projeto, a configuração do Spring Boot ou a estrutura do aplicativo. Em alguns casos, pode ser necessário customizar o carregador de classes para atender a necessidades específicas. Isso geralmente envolve configuração avançada e possíveis alterações de código e precisa ser tratado com cautela.

Resumindo, TomcatEmbeddedWebappClassLoader é um importante carregador de classes no ambiente Tomcat integrado do Spring Boot. Ele fornece isolamento, dinâmica e otimização do carregamento de classes para oferecer suporte a aplicativos Spring Boot de alto desempenho.

2. O relacionamento entre TomcatEmbeddedWebappClassLoader e LaunchedURLClassLoader no SpringBoot

org.springframework.boot.loader.LaunchedURLClassLoader é o carregador de classe pai de TomcatEmbeddedWebappClassLoader

Insira a descrição da imagem aqui
sol.misc.Launcher$AppClassLoadersimorg.springframework.boot.loader.LaunchedURLClassLoaderO carregador de classes pai.