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
385 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

<code class="language-java">@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());
    }
}</code>
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!

source:php.cn
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