1

UI メッセージを解決し、Spring フレームワークを使用して Web アプリケーションで内部化サポートを提供するさまざまな方法は何ですか?

プロパティ ファイルと ResourceBundleMessageSource を使用して、Spring でメッセージを解決します。Spring の実装により、アプリケーションの CPU 使用率が高くなります。ResourceBundleMessageSource の実装には 2 つの問題があります。

  1. ロック競合 - getResourceBundle() と getMessageFormat() の両方が同期されます。
  2. MissingResourceException - メッセージの解決には、アプリケーションで定義されたすべてのリソース バンドルのループ処理と bundle.getString(key) の呼び出しが含まれます。キーが見つからない場合、bundle.getString(key) メソッド呼び出しは MissingResourceException をスローします。指定されたキーのメッセージが見つかるまでキーを検索します。例外の構築は遅いプロセスであり、CPU を食い尽くす可能性があるため (これは負荷テストで観察したことです)、これがボトルネックのように見えます。

上記の問題の両方に対する回避策がありますが (クラスを拡張して動作をオーバーライドすることにより)、Spring フレームワークで Web アプリケーションに国際化サポートを提供する他の方法があるかどうかを知りたいと思いました。

前もって感謝します

4

1 に答える 1

2

代わりにReloadableResourceBundleMessageSourceを使用できます。内部キャッシングを提供します。

それでもうまくいかない場合は、独自の MessageSource を実装することをお勧めします (かなり簡単です)。Spring は、最初に役立つ可能性のあるAbstractMessageSourceを提供します。

そこから、キャッシュを実装できます。おそらく、ローカリゼーションは頻繁に更新されていません。

Spring 3.1 の新しい Cacheable アノテーションの使用については、こちらを参照してください。

spring 3.1 @Cacheable の例

管理者がデータベース内のロケールを上書きできるようにするアプリケーションで、私はすでにこれを成功させています。ただし、特定の実装は明らかに大きく異なります。

于 2012-09-17T14:11:39.387 に答える