WARの外春MessageSourceバンドルを外部化する方法
-
21-09-2019 - |
質問
私は、より簡単にプロパティを変更するために、クラスパス外の国際化サポート(プロパティファイル)のための春MessageSourcesバンドルを外部化する必要があります。私はそれを行うことができますどのように?
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="test-messages"/>
ありがとうございます。
解決
私たちは、DB内のメッセージを検索するメッセージソースの実装を構築しています。あなたがしなければならないことは春のAbstractMessageSourceから継承(すべての機能を得るためには、Javadocを参照)ことをMessageSourceの実装を作成することです。
あなたは最小限の抽象メソッド「resolveCode(文字列、ロケール」)で実装する必要があります(ただし「resolveCodeWithoutArguments(文字列、ロケール)」を実装し、あなたのパフォーマンスを向上します)、代表者という単純なテーブルを指してDAOに、Aとこのような定義ます:
table translation (
translation_id number pk
code varchar(20)
locale varchar(5)
translation varchar(100)
)
コードとロケール形態一意のインデックス
そして、あなたは完了です。もちろんどちらかdao-またはMessageSourceレベルで、あなたはいくつかのキャッシュ機能を追加し、(「en_USのが」見つからない場合は、「EN」を試すすなわち)「ロケール劣化」動作を提供します。
これは完璧に動作します。
他のヒント
このスレッドをチェックこの問題に関する情報についてのが、私が思うに、あなたのアプリケーションを展開しようとしている場所が分からないようにTomcatのコンテキスト外のファイルを持っているのは良い習慣ではありません。
しかし、場合には、あなたはそこにいくつかのかなりいいソリューションを見つけることができます、必要があります。
所属していません StackOverflow