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)
-
OK Processus
SpringApplication Utilisez en interne la logique suivante pour sélectionner l'application appropriée: -
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!