クラス 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 ClassLoaderSE
リソースバンドルをロードする ClassLoader を返します。protected MessageFormatSE
getMessageFormat
(ResourceBundleSE bundle, StringSE code, LocaleSE locale) 指定されたバンドルとコードの MessageFormat を返し、すでに生成された MessageFormats をキャッシュから取得します。protected ResourceBundleSE
getResourceBundle
(StringSE basename, LocaleSE locale) 指定されたベース名とロケールの ResourceBundle を返し、すでに生成された ResourceBundle をキャッシュからフェッチします。protected StringSE
getStringOrNull
(ResourceBundleSE bundle, StringSE key) 指定されたキーの文字列値を効率的に取得します。見つからない場合はnull
を返します。protected ResourceBundleSE
loadBundle
(InputStreamSE inputStream) 指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。protected ResourceBundleSE
loadBundle
(ReaderSE reader) 指定されたリーダーからプロパティベースのリソースバンドルをロードします。protected MessageFormatSE
resolveCode
(StringSE code, LocaleSE locale) キャッシュされた MessageFormat インスタンスをメッセージコードごとに使用して、登録されたリソースバンドルのキーとして指定されたメッセージコードを解決します。protected StringSE
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
@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 の構成を表示します。