Spring Bootは、アプリケーションコンテキストの実装を自動的に決定します
を呼び出すと、Spring Bootは、次の要因に従って正しいApplicationContextの実装を自動的に決定します
SpringApplication.run(MySpringBootApp.class, args);
クラスパス(プロジェクトの依存関係)実行中のアプリケーションタイプ(Webまたは非web)
OKプロセス
springApplication次のロジックを内部的に使用して、適切なアプリケーションコントを選択します。
-
スプリングMVCまたはスプリングWebFlux(Spring-Boot-Starter-WebまたはSpring-Boot-Starter-Webflux):
-
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。環境と属性管理
contextorload
configuration属性。 -
application.properties
構成ファイル(application.yml
)と環境に固有の設定を管理します。
- 正しいアプリケーションコンテキストの実際の影響
@Profile
上下の正しいアプリケーションを選択すると、次のように
アプリケーション
の動作に影響します。 1。埋め込みWebサーバーを起動するかどうかを決定
- 間違ったコンテキストを選択した場合、アプリケーションはWebアプリケーションとしてを開始できない場合があります。
- Webアプリケーションには
AnnotationConfigServletWebServerApplicationContext
が必要で、Tomcat/Jettyをガイドします。
2。コントロールコンポーネントスキャンと依存注入
- コンテキストは初期化され、その範囲内の依存関係によって注入されます。
たとえば、- 非WEBコンテキストは、コントローラー(
@RestController
は機能しません)をスキャンまたは初期化しません。
3。自動構成を有効または無効にします
選択したコンテキストに基づいて- スプリングブート自動アプリケーション構成。
たとえば、- :Webコンテキストが選択されている場合、Spring Bootは MVCコンポーネントを自動的に構成します。
4。豆の管理と読み込み方法への影響
- WebコンテキストPRE -Configured
DispatcherServlet
、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 サイトの他の関連記事を参照してください。