JavaによるBeanスコープの詳細分析
この記事では、java に関する関連知識を提供します。Spring フレームワークは Bean を管理する IoC コンテナであるため、Bean は Spring において当然重要なリソースです。Bean のスコープは次のとおりです。意味は何ですか?種類は何種類ありますか?一緒に見てみましょう。皆さんのお役に立てれば幸いです。
推奨学習: 「java ビデオ チュートリアル 」
Spring フレームワークは Bean を管理する IoC コンテナであるため、Bean は当然 Spring ですBean の重要なリソースですが、Bean のスコープとは何を意味しますか?種類は何種類ありますか?次に見てみましょう。
PS: Java のパブリック クラスは、Bean または Java Bean と呼ばれます。
1. スコープ
Bean のスコープは、Spring フレームワーク全体における Bean の特定の動作モードを指します。たとえば、シングルトンスコープとは、Bean のコピーが Spring 全体に 1 つだけ存在し、グローバルに共有されることを意味し、誰かが値を変更すると、別の人が読み取るのは変更された値になります。
例として、Spring でシングルトン Bean オブジェクトのユーザーを定義します (デフォルトのスコープはシングルトンです)。具体的な実装コードは次のとおりです:
@Component public class UserBean { @Bean public User user() { User user = new User(); user.setId(1); user.setName("Java"); // 此行为重点:用户名称为 Java return user; } }
すると、クラス A では、ユーザー オブジェクトは次のようになります。クラス B で使用および変更されます。具体的な実装コードは次のとおりです。
@Controller public class AController { @Autowired private User user; public User getUser() { User user = user; user.setName("MySQL"); // 此行为重点:将 user 名称修改了 return user; } }
最後に、ユーザー オブジェクトはクラス B でも使用されます。具体的な実装コードは次のとおりです。
@Controller public class BController { @Autowired private User user; public User getUser() { User user = user; return user; } }
At今回は B オブジェクトにアクセスします getUser メソッドでは、このときのユーザー名が元の "Java" ではなく、クラス A で変更された "MySQL" になっていることがわかります。これは、Bean オブジェクトのユーザーがデフォルトでシングルトン スコープに設定されていることを意味します。 。このシングルトン オブジェクトがどこかで変更された場合、他のクラスは再度呼び出されたときに変更された値を取得します。
2. スコープの分類
Spring には、Bean の 5 つの共通スコープがあります:
- singleton: シングルトン スコープ;
- prototype: プロトタイプスコープ (複数インスタンスのスコープ);
- request: リクエスト スコープ;
- session: セッション スコープ;
- application: グローバル スコープ 。
注: 最後の 3 つのスコープは、Spring MVC フレームワークにのみ適用されます。
2.1 singleton
正式な説明: (デフォルト) 単一の Bean 定義のスコープを、各 Spring IoC コンテナーの単一のオブジェクト インスタンスに設定します。
説明: このスコープはそこにあります。は、IoC コンテナ内の以下の Bean の 1 つのインスタンスにすぎません。取得された Bean (つまり、applicationContext.getBean およびその他のメソッドを通じて取得された) とアセンブルされた Bean (つまり、@Autowired を通じて注入された) は両方とも同じオブジェクトです。
シナリオ: 通常、ステートレス Bean はこのスコープを使用します。ステートレスとは、Bean オブジェクトのプロパティの状態を更新する必要がないことを意味します。
注: Spring はデフォルトでこのスコープを選択します。
2.2 プロトタイプ
正式な説明: 単一の Bean 定義のスコープを任意の数のオブジェクト インスタンスに設定します。
説明: このスコープ内の Bean が新しいインスタンスになるたびにBean の取得 (つまり、applicationContext.getBean やその他のメソッドを介して取得) と Bean の組み立て (つまり、@Autowired を介したそれらの注入) は、両方とも新しいオブジェクト インスタンスです。
シナリオ: 通常、ステートフル Bean はこのスコープを使用します。
2.3 request
正式な説明: 単一の Bean 定義のスコープを単一の HTTP リクエストのライフサイクルに設定します。つまり、各 HTTP リクエストには、単一 Bean 定義。Web 対応 Spring ApplicationContext のコンテキストでのみ有効です。
説明: 各 Http リクエストは、プロトタイプと同様に、新しい Bean インスタンスを作成します。
シナリオ: HTTP リクエストとレスポンスの共有 Bean。
注: Spring MVC フレームワークでの使用に限定されます。
2.4 session
正式な説明: 単一の Bean 定義のスコープを HTTP セッションのライフサイクルに設定します。Web 対応 Spring ApplicationContext のコンテキストでのみ有効です。
Description : Http セッションで、Bean インスタンスを定義します。
シナリオ: ユーザー セッションの共有 Bean。例: ユーザーのログイン情報を記録します。
注: Spring MVC フレームワークでの使用に限定されます。
2.5 application
正式な説明: 単一の Bean 定義のスコープを ServletContext のライフサイクルに設定します。Web 対応 Spring ApplicationContext のコンテキストでのみ有効です。
説明: Http Servlet Context で、Bean インスタンスを定義します。
シナリオ: Web アプリケーションのコンテキスト情報 (アプリケーションの共有情報の記録など)。
注: Spring MVC フレームワークでの使用に限定されます。
3. スコープの設定
@Scope アノテーションを使用して Bean のスコープを設定できます。設定方法は 2 つあります:
スコープを直接設定する 特定の値@Scope("prototype");
ConfigurableBeanFactory および WebApplicationContext によって提供される SCOPE_XXX 変数 (@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) など) を設定します。
具体的な設定コードは次のとおりです:
Java ビデオ チュートリアル 」
以上がJavaによるBeanスコープの詳細分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

H5開発で習得する必要があるツールとフレームワークには、Vue.JS、React、Webpackが含まれます。 1.Vue.jsは、ユーザーインターフェイスの構築に適しており、コンポーネント開発をサポートします。 2.複雑なアプリケーションに適した仮想DOMを介したページレンダリングを最適化します。 3.Webpackは、モジュールのパッケージングに使用され、リソースの読み込みを最適化します。
