[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
2022-02-26 10:45:58
質問
Spring MVCアプリケーションで、私は次のアプローチを使ってサービスクラスの1つの変数を初期化します。
ApplicationContext context =
new ClassPathXmlApplicationContext("META-INF/userLibrary.xml");
service = context.getBean(UserLibrary.class);
UserLibraryは、私のアプリケーションで使用しているサードパーティのユーティリティです。上記のコードでは、変数 'context' に対して警告が発生します。その警告を以下に示します。
Resource leak: 'context' is never closed
警告がよくわからないのですが。アプリケーションはSpring MVCアプリケーションなので、アプリケーションの実行中にサービスを参照するため、コンテキストを閉じる/破棄することはできません。この警告は一体何を伝えようとしているのでしょうか?
どうすればいいですか?
アプリのコンテキストは
ResourceLoader
(すなわち I/O 操作) は、ある時点で解放される必要のあるリソースを消費します。また、これは
AbstractApplicationContext
を実装している
Closable
. したがって、それは
close()
メソッドで使用することができ
try-with-resourcesステートメント
.
try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/userLibrary.xml")) {
service = context.getBean(UserLibrary.class);
}
このコンテキストを実際に作成する必要があるかどうかは別の問題です(あなたはそれにリンクしています)、私はそれについてコメントするつもりはありません。
確かにアプリケーションを停止すると暗黙のうちにコンテキストが閉じられますが、それではダメなんです。Eclipseの言う通り、クラスローダーのリークを避けるために、他のケースでは手動で閉じるような措置を取る必要があります。
関連
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] Eclipse- Dynamic Web Module 3.0 で新しいプロジェクトを作成するときに Java 1.6 以降が必要なエラーが発生する。
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] init-paramとcontext-param
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] x--やx++はここで何をするのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Springs XmlBeanFactoryは非推奨です。
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] 文字列の長さに応じて文字列をトリミングする