クラス ResourceBundleMessageSource
- 実装されたすべてのインターフェース:
Aware
、BeanClassLoaderAware
、HierarchicalMessageSource
、MessageSource
MessageSource
実装。このクラスは、MessageFormat
SE が提供する JDK の標準メッセージ解析と組み合わせて、基礎となる JDK の ResourceBundle
SE 実装に依存しています。 この MessageSource は、アクセスされた ResourceBundle インスタンスと、各メッセージの生成された MessageFormats の両方をキャッシュします。また、AbstractMessageSource 基本クラスでサポートされているように、MessageFormat なしの引数なしメッセージのレンダリングも実装します。この MessageSource によって提供されるキャッシュは、java.util.ResourceBundle
クラスの組み込みキャッシュよりも大幅に高速です。
ベース名は ResourceBundle
SE の規則に従います。基本的に、完全修飾クラスパスの場所です。パッケージ修飾子(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 ResourceBundleSE
doGetBundle
(StringSE basename, LocaleSE locale) 指定されたベース名とロケールのリソースバンドルを取得します。protected @Nullable ClassLoaderSE
リソースバンドルをロードする ClassLoader を返します。protected @Nullable MessageFormatSE
getMessageFormat
(ResourceBundleSE bundle, StringSE code, LocaleSE locale) 指定されたバンドルとコードの MessageFormat を返し、すでに生成された MessageFormats をキャッシュから取得します。protected @Nullable ResourceBundleSE
getResourceBundle
(StringSE basename, LocaleSE locale) 指定されたベース名とロケールの ResourceBundle を返し、すでに生成された ResourceBundle をキャッシュからフェッチします。getStringOrNull
(ResourceBundleSE bundle, StringSE key) 指定されたキーの文字列値を効率的に取得します。見つからない場合はnull
を返します。protected ResourceBundleSE
loadBundle
(InputStreamSE inputStream) 指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。protected ResourceBundleSE
loadBundle
(ReaderSE reader) 指定されたリーダーからプロパティベースのリソースバンドルをロードします。protected @Nullable MessageFormatSE
resolveCode
(StringSE code, LocaleSE locale) キャッシュされた MessageFormat インスタンスをメッセージコードごとに使用して、登録されたリソースバンドルのキーとして指定されたメッセージコードを解決します。resolveCodeWithoutArguments
(StringSE code, LocaleSE locale) 登録されたリソースバンドルのキーとして指定されたメッセージコードを解決し、バンドルで見つかった値をそのまま(MessageFormat 解析なしで)返します。void
setBeanClassLoader
(ClassLoaderSE classLoader) Beanclass loader
SE を Bean インスタンスに提供するコールバック。void
setBundleClassLoader
(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
インターフェースからコピーされた説明:BeanClassLoaderAware
Beanclass loader
SE を Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean's
InitializingBean.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+ モジュールパスで実行する場合、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundle
SE を返します。- パラメーター:
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 + モジュールパスで実行すると、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundle
SE を返します。- パラメーター:
inputStream
- ターゲットリソースの入力ストリーム- 戻り値:
- 完全にロードされたバンドル
- 例外:
IOExceptionSE
- I/O 障害の場合- 導入:
- 5.1
- 関連事項:
getMessageFormat
protected @Nullable 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