[解決済み] アプリケーションのコンテキストです。これは何ですか?
質問事項
私の同僚は、アプリケーションコンテキストという言葉をよく使います。多くの記事でも、このコロケーションはよく使われています。
私の現在の理解では、アプリケーションコンテキストは単一のxmlファイルです。
しかし、もし私が正しければ、人々は設定xmlファイルの代わりに"アプリケーションコンテキスト"を使用しないだろうと理解しています。
この問題に対処する方法を教えてください。
解決方法を教えてください。
の意味について、@feakが率直に答えてくれています。
ApplicationContext
をSpringの観点から見てみましょう。要するに、設定を読み込むオブジェクトです(通常は
XMLファイル
アノテーションに基づく)そして、Springはビーンとその利益の管理を開始します。
- パッケージで宣言されたビーン
- アノテーションで宣言されたビーン
- コンストラクタとメソッドの自動配線
- Bean インジェクション
- 設定、.properties、.yaml ファイルの読み込み
- その他
アプリケーションコンテキストを起動するには、以下のいずれかを使用します。
-
アプリケーションの最初にアプリケーションコンテキストを手動でロードします。これは、サンプル目的やスタンドアロン・アプリケーションで行われます。
public class Foo { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("path/to/applicationContext.xml"); //use the context as you wish... } }
-
Spring MVCを使ったJavaのWebアプリケーションの場合
DispatchServlet
はアプリケーションコンテキストを読み込むので、アプリケーションコンテキストを作成するのは springapp-servlet.xml ファイルをアプリケーションの WEB-INF フォルダに作成します。
注意点 アプリケーションコンテキストは、1つのコンフィギュレーションに関連付けられます。 (XMLベースであろうとなかろうと)です。期間
これを理解した上で、1つのアプリケーションに対して複数のアプリケーションコンテキストを持つことができることも理解できたと思います。つまり、2つ以上の
ApplicationContext
を同じアプリケーションで使用することができます。コンソールアプリケーションの最後の例から、これは簡単に確認することができます。
public class Foo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
ApplicationContext context2 =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
//use the context as you wish...
}
}
同じXML構成を使用する2つのアプリケーションコンテキストがあることに注意してください。こんなことができるのでしょうか?はい、ここで実際に見てみましょう。では、何が違うのでしょうか?その
メイン
Spring Beanのシングルトンスコープがシングルトンであることが異なる。
アプリケーションコンテキストごとに
を取得する場合、この意味は
Bar
アプリケーションコンテキスト(applicationContext.xml)で設定された
context
は同じにはなりません。
から取得するのと同じように
context2
からの検索は可能ですが
context
は同じ
Bar
ビーンインスタンスです。
これは良い習慣とされるのか、悪い習慣とされるのか? どちらでもない しかし、それは解決すべき問題によって異なります。 悪い の実践)。ほとんどの人は、すべてのBeanを1つの場所で構成し(XMLまたは別の方法で)、1つのアプリケーションコンテキストで読み込むことをお勧めします。
関連
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] 静的変数が悪とされるのはなぜですか?
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] 文字列の巻き方
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない