Maison > Java > javaDidacticiel > printemps-: comment-spring-boot-déterminnes-application-context

printemps-: comment-spring-boot-déterminnes-application-context

Susan Sarandon
Libérer: 2025-01-29 16:08:09
original
461 Les gens l'ont consulté

spring-: how-spring-boot-determines-application-context

Spring Boot détermine automatiquement la mise en œuvre du contexte d'application

Lors de l'appel , Spring Boot déterminera automatiquement l'implémentation de l'application CONCURÉELLE Selon les facteurs suivants.

SpringApplication.run(MySpringBootApp.class, args); Chemin de classe (dépendances dans le projet)

Exécution du type d'application (web ou non -web)
  1. OK Processus
  2. SpringApplication Utilisez en interne la logique suivante pour sélectionner l'application appropriée:
  3. Si Spring MVC ou Spring Webflux (Spring-Boot-Starter-Web ou Spring-Boot-Starter-WebFlux):

Il initialisera un contexte d'application basé sur le Web

    :
  • Basé sur le service (Spring-Boot-Starter-Web): (applications Spring MVC pour Tomcat, jetée ou underty intégrés).

      Réagir (printemps-boot-starter-webflux):
    • (pour les applications webflux).
    • S'il n'y a ni printemps-boot-starter-web ni spring-boot-starter-weight: AnnotationConfigServletWebServerApplicationContext
    • Il initialisera une application non -web au-dessus et ci-dessous AnnotationConfigReactiveWebServerApplicationContext: →
    • .
  • Contexte d'application Web comme exemples

      S'il contient le spring-boot-starter-web, la sortie sera:
    • Exemples de contexte d'application non web AnnotationConfigApplicationContext
    • Si vous supprimez le Spring-Boot-Starter-Web, la sortie deviendra:

L'importance de l'initialisation du contexte de l'application

@SpringBootApplication
public class WebApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(WebApplication.class, args);
        System.out.println("Context Type: " + context.getClass().getName());
    }
}
Copier après la connexion
<程> L'application ci-dessous

est

le conteneur de noyau
<code>Context Type: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext</code>
Copier après la connexion
, il gère le cycle de vie et la configuration du bean dans l'application de démarrage de printemps. L'initialisation est importante pour les raisons suivantes:

1. Gestion des haricots

  • Contexte d'application Enregistrement et gestion de la gestion , permettant une injection de dépendance (@Autowired).
  • Sans contexte d'application, Spring ne saura pas comment installer et injecter des dépendances.

2. Configuration automatique

  • Le mécanisme @EnableAutoConfiguration dépend du contexte de l'application.
  • Il scanne le chemin du chemin et configurez le composant Spring
  • en fonction des dépendances.
  • 3. Cycle de vie et gestion des événements

Le contexte d'application publie l'événement du cycle de vie (
    ,
  • ). ApplicationReadyEvent ApplicationStartedEvent Il écoute le signal d'arrêt et gérer correctement la ressource.
  • 4. Prise en charge du serveur Web intégré

Pour les applications Web, le contexte de l'application démarre
    Embedded Server
  • (Tomcat, Jetty, Undertow). sans lui, Spring Boot
  • ne peut pas gérer la demande HTTP
  • .
  • 5. Gestion de l'environnement et des attributs

Contexte de ou
    Charge
  • Attribut de configuration application.properties. application.yml Il gère les fichiers de configuration () et les paramètres spécifiques à l'environnement.
  • @Profile
  • L'impact réel du contexte d'application correct

Choisir la bonne application ci-dessus et ci-dessous affectera le comportement de

application

, comme suit:

1. Déterminez s'il faut démarrer le serveur Web intégré

  • Si vous choisissez le mauvais contexte, votre application peut ne pas être en mesure de démarrer en tant qu'application Web.
  • L'application Web nécessite AnnotationConfigServletWebServerApplicationContext, il guide Tomcat / Jetty.

2. Composant de contrôle Scanning et injection de dépendance

  • Le contexte est initialisé et injecté par les dépendances de sa plage.
  • Par exemple, le contexte non-web ne scannera ni n'initialisera le contrôleur (@RestController ne fonctionnera pas).

3. Activer ou désactiver la configuration automatique

  • Spring Boot basé sur le contexte sélectionné Configuration automatique de l'application .
  • Par exemple: si le contexte Web est sélectionné, le démarrage Spring configurera automatiquement le composant MVC.

4. Affectant la méthode de gestion et de chargement du haricot

  • Contexte Web Pré-configuré DispatcherServlet, il gère la demande HTTP.
  • Le contexte non web n'a pas, ce qui signifie que s'il n'y a pas de configuration supplémentaire, vous ne pourrez pas gérer la demande Web .

Résumé

---
方面 Application Context 的影响
Bean 管理 初始化和管理依赖项 (`@Autowired`)
Web 服务器 启动嵌入式 Tomcat/Jetty(如果为 Web 上下文)
自动配置 根据类路径应用自动配置
生命周期管理 处理启动/关机事件
配置文件和环境 加载属性,管理配置文件 (`@Profile`)
依赖注入范围 确定哪些 Bean 和控制器可用
La dernière idée

Spring Boot sélectionnera automatiquement l'application correcte ci-dessus et ci-dessous en fonction du chemin de classe

.
  • Application Web doit être basée sur le contexte du Web ().
  • Application non -web Le contexte basé sur la norme en utilisant Standard (). AnnotationConfigServletWebServerApplicationContext
  • Le contexte correct de l'initialisation
  • assurez l'injection de dépendance correcte, la configuration automatique et la gestion du cycle de vie. ?

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal