Heim > Java > javaLernprogramm > Spring-: Howspring-Stiefeldermine-Anwendungskontext

Spring-: Howspring-Stiefeldermine-Anwendungskontext

Susan Sarandon
Freigeben: 2025-01-29 16:08:09
Original
385 Leute haben es durchsucht

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

Spring Start bestimmt automatisch die Implementierung des Anwendungskontexts

beim Aufrufen von ermittelt Spring Start automatisch die korrekte Anwendungscontext -Implementierung gemäß den folgenden Faktoren

SpringApplication.run(MySpringBootApp.class, args); Klassenpfad (Abhängigkeiten im Projekt)

Ausführen von Anwendungstypen (Web oder Nicht -Web)
  1. OK Prozess
  2. SpringApplication intern verwenden die folgende Logik, um den entsprechenden ApplicationContext auszuwählen:
  3. Wenn Spring MVC oder Spring WebFlux (Spring-Boot-Starter-Web oder Spring-Boot-Starter-Webflux):

Initialisiert einen webbasierten Anwendungskontext

:
  • basierend auf dem Service (Spring-Boot-Starter-Web):

    (Spring-MVC-Anwendungen für eingebettete Tomcat, Steg oder Summe).

    reagieren (Spring-Boot-Starter-Webflux):
    • (für Webflux-Anwendungen).
    • Wenn es weder Spring-Boot-Starter-Web noch Spring-Boot-Starter-Gewicht gibt: AnnotationConfigServletWebServerApplicationContext
    • Initialisiert eine -Web -Anwendung über und unter : → AnnotationConfigReactiveWebServerApplicationContext.
  • Webanwendungskontext als Beispiele

    Wenn es Spring-Boot-Starter-Web enthält, ist die Ausgabe:
    • Beispiele für Nicht -Web -Anwendungskontext AnnotationConfigApplicationContext Wenn Sie den Feder-Boot-Starter-Web entfernen, wird der Ausgang:
Die Bedeutung der Initialisierung des Anwendungskontexts

Anwendung unten
<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>
Nach dem Login kopieren
ist

Core Container

, sie verwaltet den Lebenszyklus und die Konfiguration von Bean in der Spring -Boot -Anwendung. Die Initialisierung ist aus folgenden Gründen wichtig:
<code>Context Type: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext</code>
Nach dem Login kopieren

1. Bean Management

  • Anwendungskontext Registrierungs- und Verwaltungsbean , sodass Abhängigkeitsinjektion (@Autowired).
  • Ohne Anwendungskontext weiß der Spring nicht, wie abhängig ist und Abhängigkeiten injiziert werden.

2. Automatische Konfiguration

  • Der Mechanismus @EnableAutoConfiguration hängt vom Anwendungskontext ab.
  • scannen Sie den Pfad und konfigurieren Sie die Federkomponente
  • gemäß den Abhängigkeiten.
  • 3. Lebenszyklus und Eventmanagement

Anwendungskontext veröffentlicht das Lebenszyklusereignis (
    ,
  • ). ApplicationReadyEvent ApplicationStartedEvent es hört das Abschaltsignal und verwaltet die Ressource korrekt.
  • 4. Embedded Web Server Support

Für Webanwendungen startet der Anwendungskontext
    eingebetteter Server
  • (Tomcat, Jetty, Totow). Ohne es kann Feder Boot
  • HTTP -Anforderung
  • nicht verarbeiten.
  • 5. Umgebung und Attributmanagement

Kontext aus oder
    laden
  • Konfigurationsattribut application.properties. application.yml Es verwaltet Konfigurationsdateien () und Einstellungen, die für die Umgebung spezifisch sind.
  • @Profile
  • Die tatsächlichen Auswirkungen des korrekten Anwendungskontexts

Auswählen der richtigen Anwendung oben und unten wirkt sich das Verhalten von

Anwendung

wie folgt aus:

1. Bestimmen Sie, ob Sie den eingebetteten Webserver starten

  • Wenn Sie den falschen Kontext auswählen, kann Ihre Anwendung möglicherweise nicht als Webanwendung starten.
  • Webanwendung erfordert
  • , sie führt Tomcat/Jetty. AnnotationConfigServletWebServerApplicationContext
2. Kontrollkomponenten Scannen und Abhängigkeitsinjektion

    Der Kontext wird von den Abhängigkeiten innerhalb seines Bereichs initialisiert und injiziert.
  • Zum Beispiel wird der Nicht -Web -Kontext
  • den Controller nicht scannen oder initialisieren ( funktioniert nicht). @RestController
3.. Aktivieren oder deaktivieren automatische Konfiguration

    Spring Boot basierend auf dem ausgewählten Kontext
  • automatische Anwendungskonfiguration .
  • zum Beispiel: Wenn der Webkontext ausgewählt ist, konfiguriert der Spring -Boot die
  • MVC -Komponente automatisch.
  • 4. Beeinflussen die Verwaltung und Lademethode von Bean

Web -Kontext vor dem konfigurierten
    , es wird mit der HTTP -Anforderung behandelt.
  • DispatcherServlet Nicht -Web -Kontext hat nicht, was bedeutet, dass
  • Wenn keine zusätzliche Konfiguration vorliegt, können Sie die Webanforderung
  • nicht verarbeiten.
Zusammenfassung

---

Die letzte Idee
方面 Application Context 的影响
Bean 管理 初始化和管理依赖项 (`@Autowired`)
Web 服务器 启动嵌入式 Tomcat/Jetty(如果为 Web 上下文)
自动配置 根据类路径应用自动配置
生命周期管理 处理启动/关机事件
配置文件和环境 加载属性,管理配置文件 (`@Profile`)
依赖注入范围 确定哪些 Bean 和控制器可用
Spring Start wählt automatisch die richtige Anwendung oben und unten gemäß dem Klassenpfad
aus.

Webanwendung
    muss auf dem Kontext von Web (
  • ) basieren. Nicht -Web -Anwendung
  • Der Standard -Basis -Kontext mit Standard (
  • ). Der korrekte Kontext der Initialisierung AnnotationConfigServletWebServerApplicationContext Gewährleisten Sie die korrekte Abhängigkeitsinjektion, automatische Konfiguration und Lebenszyklusmanagement. ?

Das obige ist der detaillierte Inhalt vonSpring-: Howspring-Stiefeldermine-Anwendungskontext. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage