Rumah >Java >javaTutorial >Spring-: How-Spring-Boot-Determines-Application-Context

Spring-: How-Spring-Boot-Determines-Application-Context

Susan Sarandon
Susan Sarandonasal
2025-01-29 16:08:09390semak imbas

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

boot musim bunga secara automatik menentukan pelaksanaan konteks aplikasi

Apabila memanggil , Spring Boot akan menentukan pelaksanaan ApplicationContext yang betul mengikut faktor -faktor berikut

SpringApplication.run(MySpringBootApp.class, args); Laluan Kelas (Ketergantungan dalam Projek)

jenis aplikasi berjalan (web atau non -web)
  1. proses ok
  2. SpringApplication secara dalaman Gunakan logik berikut untuk memilih ApplicationContext yang sesuai:
  3. Jika Spring MVC atau Spring WebFlux (Spring-Boot-Starter-Web atau Spring-Boot-Starter-WebFlux):

ia akan memulakan konteks aplikasi berasaskan web

:
  • Berdasarkan perkhidmatan (Spring-Boot-Starter-Web):

    (Aplikasi MVC Spring untuk Tomcat, Jeti atau Undertow).

    Reacting (Spring-Boot-Starter-WebFlux):
    • (untuk aplikasi WebFlux).
    • Jika tidak ada spring-boot-starter-web atau spring-boot-starter-weight: AnnotationConfigServletWebServerApplicationContext
    • Ia akan memulakan aplikasi bukan -web di atas dan di bawah : → AnnotationConfigReactiveWebServerApplicationContext.
  • konteks aplikasi web sebagai contoh

    Jika ia mengandungi Spring-Boot-Starter-Web, output akan menjadi:
    • contoh konteks aplikasi bukan -web AnnotationConfigApplicationContext Jika anda mengeluarkan Web Starter-Starter-Starter-Web, output akan menjadi:
kepentingan inisialisasi konteks aplikasi

Aplikasi di bawah
<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>
adalah

Container Core

, ia menguruskan kitaran hayat dan konfigurasi kacang dalam aplikasi Spring Boot. Inisialisasi adalah penting untuk sebab -sebab berikut:
<code>Context Type: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext</code>

1. Pengurusan kacang

  • Konteks Permohonan Pendaftaran dan Pengurusan Bean , yang membolehkan suntikan ketergantungan (). @Autowired
  • Tanpa konteks permohonan, Spring tidak akan tahu bagaimana untuk contoh dan menyuntik kebergantungan.
2. Konfigurasi automatik

  • Mekanisme bergantung kepada konteks aplikasi. @EnableAutoConfiguration ia mengimbas jalan dan konfigurasikan komponen
  • spring mengikut ketergantungan.
  • 3. Kitaran Hidup dan Pengurusan Acara

Konteks aplikasi menerbitkan peristiwa kitaran hayat (

,
    ).
  • ApplicationReadyEvent Ia mendengar isyarat penutupan dan menguruskan sumber dengan betul. ApplicationStartedEvent
  • 4. Sokongan Pelayan Web Terbenam

Untuk aplikasi web, konteks aplikasi bermula

pelayan tertanam
    (Tomcat, Jeti, Undertow).
  • Tanpa itu, Spring Boot tidak dapat mengendalikan permintaan HTTP
  • .
  • 5. Alam Sekitar dan Pengurusan Atribut

Konteks dari atau

LOAD
    atribut konfigurasi
  • . application.properties application.yml Ia menguruskan fail konfigurasi () dan tetapan khusus untuk persekitaran.
  • @Profile kesan sebenar konteks aplikasi yang betul
memilih aplikasi yang betul di atas dan di bawah akan menjejaskan tingkah laku
aplikasi

, seperti berikut:

1. Tentukan sama ada untuk memulakan pelayan web tertanam

  • Jika anda memilih konteks yang salah, aplikasi anda mungkin tidak dapat memulakan sebagai aplikasi web.
  • Aplikasi web memerlukan AnnotationConfigServletWebServerApplicationContext, ia membimbing Tomcat/Jeti.

2. Kawalan Komponen Pengimbasan dan Suntikan Ketergantungan

  • Konteks diasaskan dan disuntik oleh kebergantungan dalam julatnya.
  • Sebagai contoh, konteks bukan -web tidak akan mengimbas atau memulakan pengawal (@RestController tidak akan berfungsi).

3. Dayakan atau lumpuhkan konfigurasi automatik

  • Spring Boot Berdasarkan konteks yang dipilih Konfigurasi Aplikasi Automatik .
  • Sebagai contoh: Jika konteks web dipilih, boot musim bunga akan
  • secara automatik mengkonfigurasi komponen MVC.
4. Mempengaruhi kaedah pengurusan dan pemuatan kacang

    Konteks web Pre ​​-configured
  • , ia mengendalikan permintaan HTTP. DispatcherServlet
  • Konteks Non -Web tidak mempunyai, yang bermaksud bahawa
  • Jika tidak ada konfigurasi tambahan, anda tidak akan dapat mengendalikan permintaan web .

Ringkasan

---
idea terakhir
方面 Application Context 的影响
Bean 管理 初始化和管理依赖项 (`@Autowired`)
Web 服务器 启动嵌入式 Tomcat/Jetty(如果为 Web 上下文)
自动配置 根据类路径应用自动配置
生命周期管理 处理启动/关机事件
配置文件和环境 加载属性,管理配置文件 (`@Profile`)
依赖注入范围 确定哪些 Bean 和控制器可用
Spring Boot secara automatik akan memilih aplikasi yang betul di atas dan di bawah mengikut laluan kelas

.

    Aplikasi Web
  • perlu berdasarkan konteks web ().
  • Aplikasi non -web
  • Konteks berasaskan standard menggunakan standard (). Konteks Inisialisasi yang betul AnnotationConfigServletWebServerApplicationContext Pastikan suntikan ketergantungan yang betul, konfigurasi automatik dan pengurusan kitaran hayat. ?

Atas ialah kandungan terperinci Spring-: How-Spring-Boot-Determines-Application-Context. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Hari16Artikel seterusnya:Hari16