クラス ResourceBundleMessageSource
- 実装されているすべてのインターフェース:
Aware、BeanClassLoaderAware、HierarchicalMessageSource、MessageSource
MessageSource 実装。このクラスは、MessageFormatSE が提供する JDK の標準メッセージ解析と組み合わせて、基礎となる JDK の ResourceBundleSE 実装に依存しています。 この MessageSource は、アクセスされた ResourceBundle インスタンスと、各メッセージの生成された MessageFormats の両方をキャッシュします。また、AbstractMessageSource 基本クラスでサポートされているように、MessageFormat なしの引数なしメッセージのレンダリングも実装します。この MessageSource によって提供されるキャッシュは、java.util.ResourceBundle クラスの組み込みキャッシュよりも大幅に高速です。
ベース名は ResourceBundleSE の規則に従います。基本的に、完全修飾クラスパスの場所です。パッケージ修飾子(org.mypackage など)が含まれていない場合は、クラスパスルートから解決されます。JDK の標準 ResourceBundle は、ドットをパッケージ区切り文字として扱うことに注意してください。これは、"test.theme" が事実上「テスト / テーマ」と同等であることを意味します。
クラスパスでは、バンドルリソースはローカルに構成された encoding で読み取られます。デフォルトでは ISO-8859-1 です。これを UTF-8 に切り替えるか、プラットフォームのデフォルトエンコーディングを null に切り替えることを検討してください。ローカルで提供される ResourceBundle.Control ハンドルがサポートされていない JDK9 + モジュールパスでは、この MessageSource は常にプラットフォームのデフォルトエンコーディングで ResourceBundle.getBundle(java.lang.String)SE 取得にフォールバックします: JDK 9+ で ISO-8859-1 フォールバックを使用する UTF-8("java.util.PropertyResourceBundle.encoding" を介して構成可能)システムプロパティ)。この場合も loadBundle(Reader)/loadBundle(InputStream) は呼び出されず、サブクラスのオーバーライドは事実上無視されることに注意してください。代わりに、JDK 9 java.util.spi.ResourceBundleProvider の実装を検討してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Qimiao Chen
- 関連事項:
フィールドのサマリー
クラス org.springframework.context.support.MessageSourceSupport から継承されたフィールド
loggerコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected ResourceBundleSEdoGetBundle(StringSE basename, LocaleSE locale) 指定されたベース名とロケールのリソースバンドルを取得します。protected ClassLoaderSEリソースバンドルをロードする ClassLoader を返します。protected MessageFormatSEgetMessageFormat(ResourceBundleSE bundle, StringSE code, LocaleSE locale) 指定されたバンドルとコードの MessageFormat を返し、すでに生成された MessageFormats をキャッシュから取得します。protected ResourceBundleSEgetResourceBundle(StringSE basename, LocaleSE locale) 指定されたベース名とロケールの ResourceBundle を返し、すでに生成された ResourceBundle をキャッシュからフェッチします。protected StringSEgetStringOrNull(ResourceBundleSE bundle, StringSE key) 指定されたキーの文字列値を効率的に取得します。見つからない場合はnullを返します。protected ResourceBundleSEloadBundle(InputStreamSE inputStream) 指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。protected ResourceBundleSEloadBundle(ReaderSE reader) 指定されたリーダーからプロパティベースのリソースバンドルをロードします。protected MessageFormatSEresolveCode(StringSE code, LocaleSE locale) キャッシュされた MessageFormat インスタンスをメッセージコードごとに使用して、登録されたリソースバンドルのキーとして指定されたメッセージコードを解決します。protected StringSEresolveCodeWithoutArguments(StringSE code, LocaleSE locale) 登録されたリソースバンドルのキーとして指定されたメッセージコードを解決し、バンドルで見つかった値をそのまま(MessageFormat 解析なしで)返します。voidsetBeanClassLoader(ClassLoaderSE classLoader) Beanclass loaderSE を Bean インスタンスに提供するコールバック。voidsetBundleClassLoader(ClassLoaderSE classLoader) リソースバンドルを読み込む ClassLoader を設定します。toString()この MessageSource の構成を表示します。クラス org.springframework.context.support.AbstractResourceBasedMessageSource から継承されたメソッド
addBasenames, getBasenameSet, getCacheMillis, getDefaultEncoding, getDefaultLocale, isFallbackToSystemLocale, setBasename, setBasenames, setCacheMillis, setCacheSeconds, setDefaultEncoding, setDefaultLocale, setFallbackToSystemLocaleクラス org.springframework.context.support.AbstractMessageSource から継承されたメソッド
getCommonMessages, getDefaultMessage, getDefaultMessage, getMessage, getMessage, getMessage, getMessageFromParent, getMessageInternal, getParentMessageSource, isUseCodeAsDefaultMessage, resolveArguments, setCommonMessages, setParentMessageSource, setUseCodeAsDefaultMessageクラス org.springframework.context.support.MessageSourceSupport から継承されたメソッド
createMessageFormat, formatMessage, isAlwaysUseMessageFormat, renderDefaultMessage, setAlwaysUseMessageFormat
コンストラクターの詳細
ResourceBundleMessageSource
public ResourceBundleMessageSource()
メソッドの詳細
setBundleClassLoader
リソースバンドルを読み込む ClassLoader を設定します。デフォルトは BeanFactory の
bean ClassLoaderを含むか、BeanFactory 内で実行されていない場合はClassUtils.getDefaultClassLoader()によって決定されるデフォルト ClassLoader です。getBundleClassLoader
リソースバンドルをロードする ClassLoader を返します。デフォルトは、BeanFactory の Bean ClassLoader を含んでいます。
setBeanClassLoader
インターフェースからコピーされた説明:BeanClassLoaderAwareBeanclass loaderSE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean'sInitializingBean.afterPropertiesSet()メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanClassLoaderAwareのsetBeanClassLoader - パラメーター:
classLoader- 所有クラスローダー
resolveCodeWithoutArguments
登録されたリソースバンドルのキーとして指定されたメッセージコードを解決し、バンドルで見つかった値をそのまま(MessageFormat 解析なしで)返します。- オーバーライド:
- クラス
AbstractMessageSourceのresolveCodeWithoutArguments - パラメーター:
code- 解決するメッセージのコードlocale- コードを解決するロケール (サブクラスは国際化をサポートすることが推奨されます)- 戻り値:
- メッセージ文字列、または見つからない場合は
null - 関連事項:
resolveCode
キャッシュされた MessageFormat インスタンスをメッセージコードごとに使用して、登録されたリソースバンドルのキーとして指定されたメッセージコードを解決します。- 次で指定:
- クラス
AbstractMessageSourceのresolveCode - パラメーター:
code- 解決するメッセージのコードlocale- コードを解決するロケール (サブクラスは国際化をサポートすることが推奨されます)- 戻り値:
- メッセージの MessageFormat。見つからない場合は
null - 関連事項:
getResourceBundle
指定されたベース名とロケールの ResourceBundle を返し、すでに生成された ResourceBundle をキャッシュからフェッチします。- パラメーター:
basename- ResourceBundle のベース名locale- ResourceBundle を見つけるためのロケール- 戻り値:
- 結果の ResourceBundle、または指定されたベース名とロケールで何も見つからなかった場合は
null
doGetBundle
protected ResourceBundleSE doGetBundle(StringSE basename, LocaleSE locale) throws MissingResourceExceptionSE 指定されたベース名とロケールのリソースバンドルを取得します。- パラメーター:
basename- 検索するベース名locale- 検索するロケール- 戻り値:
- 対応する ResourceBundle
- 例外:
MissingResourceExceptionSE- 一致するバンドルが見つからなかった場合- 関連事項:
loadBundle
指定されたリーダーからプロパティベースのリソースバンドルをロードします。これは、
ResourceBundleMessageSourceのデフォルトの ISO-8859-1 エンコーディングを含む"defaultEncoding"の場合に呼び出されます。このメソッドはResourceBundle.Controlでのみ呼び出すことができます。このようなコントロールハンドルがサポートされていない JDK 9+ モジュールパスで実行する場合、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundleSE を返します。- パラメーター:
reader- ターゲットリソースのリーダー- 戻り値:
- 完全にロードされたバンドル
- 例外:
IOExceptionSE- I/O 障害の場合- 導入:
- 4.2
- 関連事項:
loadBundle
指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。これは、
"defaultEncoding"がnullに設定されている場合にのみ呼び出され、プラットフォームのデフォルトエンコーディング(JDK 9+ で ISO-8859-1 フォールバックを備えた UTF-8 ですが、"java.util.PropertyResourceBundle.encoding" システムプロパティを介して構成可能)を明示的に適用します。このメソッドはResourceBundle.Controlでのみ呼び出すことができることに注意してください。このような制御ハンドルがサポートされていない JDK9 + モジュールパスで実行すると、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundleSE を返します。- パラメーター:
inputStream- ターゲットリソースの入力ストリーム- 戻り値:
- 完全にロードされたバンドル
- 例外:
IOExceptionSE- I/O 障害の場合- 導入:
- 5.1
- 関連事項:
getMessageFormat
@Nullable protected MessageFormatSE getMessageFormat(ResourceBundleSE bundle, StringSE code, LocaleSE locale) throws MissingResourceExceptionSE 指定されたバンドルとコードの MessageFormat を返し、すでに生成された MessageFormats をキャッシュから取得します。- パラメーター:
bundle- ResourceBundle に取り組むcode- 取得するメッセージコードlocale- MessageFormat の構築に使用するロケール- 戻り値:
- 結果の MessageFormat、または指定されたコードに対してメッセージが定義されていない場合は
null - 例外:
MissingResourceExceptionSE- ResourceBundle によってスローされた場合
getStringOrNull
指定されたキーの文字列値を効率的に取得します。見つからない場合はnullを返します。4.2 の時点で、デフォルトの実装は
containsKeyをチェックしてからgetStringを呼び出します(キーが見つからない場合はMissingResourceExceptionをキャッチする必要があります)。サブクラスでオーバーライドできます。
- パラメーター:
bundle- ResourceBundle で検索を実行しますkey- 見上げる鍵- 戻り値:
- 関連する値、または存在しない場合は
null - 導入:
- 4.2
- 関連事項:
toString
この MessageSource の構成を表示します。