ホームページ >Java >&#&チュートリアル >spring-:how-spring-boot-determines-application-context

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

Susan Sarandon
Susan Sarandonオリジナル
2025-01-29 16:08:09390ブラウズ

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

Spring Bootは、アプリケーションコンテキストの実装を自動的に決定します

を呼び出すと、Spring Bootは、次の要因に従って正しいApplicationContextの実装を自動的に決定します

SpringApplication.run(MySpringBootApp.class, args);クラスパス(プロジェクトの依存関係)実行中のアプリケーションタイプ(Webまたは非web)

OKプロセス springApplication次のロジックを内部的に使用して、適切なアプリケーションコントを選択します。
  1. スプリングMVCまたはスプリングWebFlux(Spring-Boot-Starter-WebまたはSpring-Boot-Starter-Webflux):
  2. A Webベースのアプリケーションコンテキスト
を初期化します サービスに基づいて

(Spring-boot-starter-web):

(埋め込まれたTomcat、Jetty、またはUndertow用のSpring MVCアプリケーション)。

    Reacting(Spring-Boot-Starter-Webflux):
  • (WebFluxアプリケーションの場合)。

      のどちらもない場合:
  • :→の上および下の非WEBアプリケーションを初期化します。 AnnotationConfigServletWebServerApplicationContext
  • 例としてのWebアプリケーションのコンテキスト AnnotationConfigReactiveWebServerApplicationContext
非WEBアプリケーションのコンテキストの例

アプリケーションコンテキストの初期化の重要性

アプリケーションは core container
  • です。スプリングブートアプリケーションでのBeanのライフサイクルと構成を管理します。初期化は、次の理由で重要です

    1。Bean管理

    • アプリケーションコンテキスト登録および管理bean、依存関係の噴射(@Autowired)を許可します。
    • アプリケーションのコンテキストがなければ、Springは依存関係をインスタンスして注入する方法を知りません。

    2。自動構成

    • メカニズム@EnableAutoConfigurationは、アプリケーションのコンテキストに依存します。
    • パスをスキャンして、依存関係に従って
    • スプリングコンポーネントを構成します。
    • 3。ライフサイクルとイベント管理

    アプリケーションコンテキストでのライフサイクルイベント(
    • )を公開します。 ApplicationReadyEvent ApplicationStartedEventシャットダウン信号に耳を傾け、リソースを正しく管理します。
    • 4。埋め込みWebサーバーサポート

    Webアプリケーションの場合、アプリケーションのコンテキストは
      埋め込みサーバー
    • (Tomcat、Jetty、Undertow)を開始します。 それがなければ、spring boothttpリクエスト
    • を処理できません。
    • 5。環境と属性管理
    contextor

    load

    configuration属性
    • application.properties構成ファイル(application.yml)と環境に固有の設定を管理します。
    • 正しいアプリケーションコンテキストの実際の影響@Profile
    • 上下の正しいアプリケーションを選択すると、次のように
    アプリケーション
    の動作に影響します。

    1。埋め込みWebサーバーを起動するかどうかを決定

    • 間違ったコンテキストを選択した場合、アプリケーションはWebアプリケーションとしてを開始できない場合があります。
    • WebアプリケーションにはAnnotationConfigServletWebServerApplicationContextが必要で、Tomcat/Jettyをガイドします。

    2。コントロールコンポーネントスキャンと依存注入

    • コンテキストは初期化され、その範囲内の依存関係によって注入されます。
    • たとえば、
    • 非WEBコンテキストは、コントローラー@RestControllerは機能しません)をスキャンまたは初期化しません。

    3。自動構成を有効または無効にします

      選択したコンテキストに基づいて
    • スプリングブート自動アプリケーション構成
    • たとえば、
    • :Webコンテキストが選択されている場合、Spring Bootは MVCコンポーネントを自動的に構成します。

    4。豆の管理と読み込み方法への影響

    • WebコンテキストPRE -ConfiguredDispatcherServlet、HTTPリクエストを処理します。
    • 非WEBコンテキストにはありません。つまり、追加の構成がない場合、Webリクエストを処理できないことを意味します。
    要約

    ---

    最後のアイデア
    方面 Application Context 的影响
    Bean 管理 初始化和管理依赖项 (`@Autowired`)
    Web 服务器 启动嵌入式 Tomcat/Jetty(如果为 Web 上下文)
    自动配置 根据类路径应用自动配置
    生命周期管理 处理启动/关机事件
    配置文件和环境 加载属性,管理配置文件 (`@Profile`)
    依赖注入范围 确定哪些 Bean 和控制器可用
    Spring Bootは、クラスパス
    に従って、上下の正しいアプリケーションを自動的に選択します。

    webアプリケーション
      web(
    • )のコンテキストに基づいている必要があります。 非WEBアプリケーション
    • 標準ベースのコンテキストを使用した標準ベースのコンテキスト(
    • )。 初期化の正しいコンテキストAnnotationConfigServletWebServerApplicationContext正しい依存関係インジェクション、自動構成、ライフサイクル管理を確認します。 ?
  • 以上がspring-:how-spring-boot-determines-application-contextの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    前の記事:16日目次の記事:16日目