


Lorsque Tomcat charge les modules de Spring-Web, le mécanisme SPI détruit-il vraiment le principe de visibilité des chargeurs de classe Java?
Apr 19, 2025 pm 02:18 PMChargement du module Tomcat et Spring-Web: analyse du comportement de chargement des classes sous le mécanisme SPI
Lorsque TomCat charge le module Spring-Web, il utilise le mécanisme Java SPI (Interface du fournisseur de services) pour trouver et utiliser ServletContainerInitializer
. Cela implique la méthode load
de ServiceLoader
et le principe de visibilité du chargeur de classe. Certaines personnes remettent en question cette approche viole le principe de visibilité des chargeurs de classe, alors analysons-le en profondeur.
L'article souligne que la méthode ServiceLoader.load
est finalement chargée par sun.misc.Launcher.AppClassLoader
pour charger la classe d'implémentation de ServletContainerInitializer
. Dans le code, ServiceLoader.load(service, cl)
utilise Thread.currentThread().getContextClassLoader()
pour obtenir le chargeur de classe. Dans des serveurs d'applications tels que TomCat, ce chargeur de classe est généralement AppClassLoader
.
Certaines personnes pensent que ServiceLoader.load(service, cl)
équivaut à ServiceLoader.load(service, null)
. Bien que les résultats soient similaires dans certains cas, les principes sont différents. Le premier spécifie explicitement le chargeur de classe, tandis que le second utilise le chargeur de classe de l'appelant.
Pourquoi quelqu'un pense-t-il que cela brise le principe de visibilité des chargeurs de classe? La clé réside dans la particularité du mécanisme SPI. L'interface de rt.jar
est chargée par BootstrapClassLoader
, mais sa classe d'implémentation est généralement dans ClassPath et est chargée par AppClassLoader
. BootstrapClassLoader
ne peut pas être chargé vers le bas, donc le chargeur de classe de contexte de thread doit charger la classe d'implémentation. Cela contourne la hiérarchie stricte du modèle de délégation parent, permettant AppClassLoader
de charger des classes que BootstrapClassLoader
ne peut pas charger. Bien que le problème ait été résolu, il a également dévié de l'intention d'origine du modèle de délégation parent.
Il convient de souligner que AppClassLoader
ne saute pas directement le code du mécanisme de délégation parent, et il suit toujours la logique de délégation parent en interne. Ce n'est que dans le scénario SPI que, en raison des limites de BootstrapClassLoader
, le travail de chargement final est effectué par AppClassLoader
, qui est un compromis. Le mécanisme JDBC est similaire. Java fournit uniquement des interfaces. La mise en ?uvre spécifique est fournie par le fabricant, et les restrictions du mécanisme de délégation parent sont également nécessaires pour contourner.
Par conséquent, le mécanisme SPI "viole" les règles strictes du modèle de délégation des parents dans une certaine mesure, mais il s'agit d'un compromis nécessaire et ne "détruit pas complètement" le principe de visibilité des chargeurs de classe. Il trouve un moyen approprié de charger la classe d'implémentation via le chargeur de classe de contexte de thread.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Ethereum est une plate-forme d'application décentralisée basée sur des contrats intelligents, et son ETH de token natif peut être obtenu de diverses manières. 1. Enregistrez un compte via des plateformes centralisées telles que Binance et OUYIOK, complétez la certification KYC et achetez ETH avec des stablecoins; 2. Connectez-vous au stockage numérique via des plates-formes décentralisées et échangez directement ETH avec des stablescoins ou d'autres jetons; 3. Participer à un engagement de réseau et vous pouvez choisir un engagement indépendant (nécessite 32 ETH), des services de gage liquide ou un engagement en un clic sur la plate-forme centralisée pour obtenir des récompenses; 4. Gagnez ETH en fournissant des services aux projets Web3, en effectuant des taches ou en obtenant des Airdrops. Il est recommandé que les débutants partent des plates-formes centralisées traditionnelles, passent progressivement vers des méthodes décentralisées et attachent toujours de l'importance à la sécurité des actifs et à la recherche indépendante, à

Qu'est-ce que Treehouse (Tree)? Comment fonctionne Treehouse (Tree)? Treehouse Products Tethdor - Taux de citation décentralisé Gonuts Points Système Treehouse met en évidence les jetons d'arbre et l'économie des jetons Présentation du troisième trimestre de l'équipe de développement de la feuille de route 2025, des investisseurs et des partenaires Treehouse Team Investment Fund Résumé Partenaire, car DeFi continue d'étendre les marques financières, la demande de produits à revenu fixe est en croissance, et son r?le est similaire au r?le des liaisons dans les marques financières traditionnelles. Cependant, construire sur la blockchain

Table des matières Crypto Market Panoramic Nugget Popular Token Vinevine (114,79%, valeur marchande circulaire de 144 millions de dollars) Zorazora (16,46%, valeur marchande circulaire de 290 millions de dollars américains) NAVXNAVIPROTOCOL (10,36%, valeur marchande circulaire de la cha?ne éthereum de 25,7624 millions de dollars) et alpha interprètes le NFT sur les ventes de NFT sur la cha?ne éthereum dans la cha?ne de séquences de séquences) et l'alpha interprète la NFT sur la cha?ne éthereum dans la cha?ne de séquences de séquences) et les alpha et les interventions NFT sur la pénu Les cryptopunks classés en premier dans le réseau de prover décentralisé succinct ont lancé la fondation succincte, qui peut être le token tge

Une bataille verbale sur la valeur des "jetons de créateur" a balayé le cercle social cryptographique. Les deux principales cha?nes publiques de Base et Solana ont eu une rare confrontation frontale, et un débat féroce autour de Zora et Pump. D'où vient cette confrontation remplie de poudre à canon? Découvons. La controverse a éclaté: le fusible de l'attaque de Sterling Crispin contre Zora était le chercheur de Delcomplex, Sterling Crispin, a bombardé publiquement Zora sur les plateformes sociales. Zora est un protocole social sur la cha?ne de base, en se concentrant sur la page d'accueil et le contenu de l'utilisateur

Répertoire Qu'est-ce que le zircuit comment faire fonctionner les caractéristiques principales zircuites de la sécurité de la sécurité de la sécurité zircuit de sécurité AI Sécurité native Ponts zircuits Points zircuits Staking Qu'est-ce que la prédiction de prix Zircuit Token (ZRC) Zircuit (ZRC) Prédiction de prix Comment acheter ZRC COIN? Conclusion Ces dernières années, le marché de niche de la plate-forme Blockchain Layer2 qui fournit des services au réseau Ethereum (ETH) Layer1 a prospéré, principalement en raison de la congestion du réseau, des frais de manipulation élevée et une mauvaise évolutivité. Beaucoup de ces plateformes utilisent une technologie à volume, plusieurs lots de transaction traités hors cha?ne

Le montant total de Bitcoin est de 21 millions, ce qui est une règle immuable déterminée par la conception d'algorithmes. 1. Grace au mécanisme de preuve de travail et à la règle d'émission de la moitié de tous les 210 000 blocs, l'émission de nouvelles pièces a diminué de fa?on exponentielle, et l'émission supplémentaire a finalement été arrêtée vers 2140. 2. Le montant total de 21 millions est dérivé de la résumé de la séquence à échelle égale. La récompense initiale est de 50 Bitcoins. Après chaque réduction de moitié, la somme de la somme converge à 21 millions. Il est solidifié par le code et ne peut pas être falsifié. 3. Depuis sa naissance en 2009, les quatre événements de réduction de moitié ont considérablement entra?né des prix, vérifié l'efficacité du mécanisme de rareté et constitué un consensus mondial. 4. Le total fixe donne une anti-inflation bitcoin et une métallicité jaune numérique, sa valeur marchande dépassant 2,1 billions de dollars en 2025, devenant le cinquième plus grand capital au monde

L'échec à enregistrer un compte Binance est principalement causé par le blocage régional IP, les anomalies du réseau, la défaillance de l'authentification KYC, la duplication du compte, les problèmes de compatibilité des appareils et la maintenance du système. 1. Utilisez des n?uds régionaux sans restriction pour assurer la stabilité du réseau; 2. Soumettre les informations claires et complètes des certificats et assortir la nationalité; 3. Inscrivez-vous avec l'adresse e-mail non liée; 4. Nettoyez le cache du navigateur ou remplacez l'appareil; 5. évitez les périodes de maintenance et faites attention à l'annonce officielle; 6. Après l'inscription, vous pouvez immédiatement activer le 2FA, aborder la liste blanche et le code anti-phishing, qui peuvent effectuer l'enregistrement dans les 10 minutes et améliorer la sécurité de plus de 90%, et enfin construire une boucle fermée de conformité et de sécurité.

Les stablecoins sont très privilégiés pour leur valeur stable, leurs attributs de sécurité et un large éventail de scénarios d'application. 1. Lorsque le marché fluctue violemment, les stablecoins peuvent servir de refuge pour aider les investisseurs à verrouiller les bénéfices ou à éviter les pertes; 2. En tant que support de trading efficace, les stablecoins connectent la monnaie fiduciaire et le monde de la cryptographie, avec des vitesses de transaction rapides et des frais de manutention faibles, et prennent en charge les paires de trading riches; 3. C'est la pierre angulaire de la finance décentralisée (DEFI).
