クラス 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" が事実上「テスト / テーマ」と同等であることを意味します。
クラスパス上のバンドルリソースは、ローカルで構成された Charset で読み込まれます。デフォルトでは ISO-8859-1 ですが、UTF-8 またはプラットフォームのデフォルトエンコーディングである null に変更することを検討してください。ローカルで提供される ResourceBundle.Control ハンドルがサポートされていない JDK 9 以降のモジュールパスでは、この MessageSource は常にプラットフォームのデフォルトエンコーディング (UTF-8、JDK 9 以降では ISO-8859-1 フォールバック、"java.util.PropertyResourceBundle.encoding" システムプロパティで構成可能) を使用した ResourceBundle.getBundle(String)SE 取得にフォールバックします。この場合も loadBundle(Reader)/loadBundle(InputStream) は呼び出されないため、サブクラスのオーバーライドは事実上無視されます。代わりに JDK 9 の java.util.spi.ResourceBundleProvider を実装することを検討してください。
- 作成者:
- Rod Johnson, Juergen Hoeller, Qimiao Chen, Sam Brannen
- 関連事項:
フィールドのサマリー
クラス MessageSourceSupport から継承されたフィールド
loggerコンストラクター概要
コンストラクター方法の概要
修飾子と型メソッド説明protected ResourceBundleSEdoGetBundle(StringSE basename, LocaleSE locale) 指定されたベース名とロケールのリソースバンドルを取得します。protected @Nullable ClassLoaderSEリソースバンドルをロードする ClassLoader を返します。protected @Nullable MessageFormatSEgetMessageFormat(ResourceBundleSE bundle, StringSE code, LocaleSE locale) 指定されたバンドルとコードの MessageFormat を返し、すでに生成された MessageFormats をキャッシュから取得します。protected @Nullable ResourceBundleSEgetResourceBundle(StringSE basename, LocaleSE locale) 指定されたベース名とロケールの ResourceBundle を返し、すでに生成された ResourceBundle をキャッシュからフェッチします。getStringOrNull(ResourceBundleSE bundle, StringSE key) 指定されたキーの文字列値を効率的に取得します。見つからない場合はnullを返します。protected ResourceBundleSEloadBundle(InputStreamSE inputStream) 指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。protected ResourceBundleSEloadBundle(ReaderSE reader) 指定されたリーダーからプロパティベースのリソースバンドルをロードします。protected @Nullable MessageFormatSEresolveCode(StringSE code, LocaleSE locale) キャッシュされた MessageFormat インスタンスをメッセージコードごとに使用して、登録されたリソースバンドルのキーとして指定されたメッセージコードを解決します。resolveCodeWithoutArguments(StringSE code, LocaleSE locale) 登録されたリソースバンドルのキーとして指定されたメッセージコードを解決し、バンドルで見つかった値をそのまま(MessageFormat 解析なしで)返します。voidsetBeanClassLoader(ClassLoaderSE classLoader) Beanclass loaderSE を Bean インスタンスに提供するコールバック。voidsetBundleClassLoader(ClassLoaderSE classLoader) リソースバンドルを読み込む ClassLoader を設定します。toString()この MessageSource の構成を表示します。クラス AbstractResourceBasedMessageSource から継承されたメソッド
addBasenames, getBasenameSet, getCacheMillis, getDefaultCharset, getDefaultEncoding, getDefaultLocale, isFallbackToSystemLocale, setBasename, setBasenames, setCacheMillis, setCacheSeconds, setDefaultCharset, setDefaultEncoding, setDefaultLocale, setFallbackToSystemLocaleクラス AbstractMessageSource から継承されたメソッド
getCommonMessages, getDefaultMessage, getDefaultMessage, getMessage, getMessage, getMessage, getMessageFromParent, getMessageInternal, getParentMessageSource, isUseCodeAsDefaultMessage, resolveArguments, setCommonMessages, setParentMessageSource, setUseCodeAsDefaultMessage
コンストラクターの詳細
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
指定されたリーダーからプロパティベースのリソースバンドルをロードします。これは、"defaultCharset" の場合に呼び出されます。
ResourceBundleMessageSourceのデフォルトの ISO-8859-1 エンコーディングも含まれます。このメソッドはResourceBundle.Controlでのみ呼び出せることに注意してください。このような制御ハンドルがサポートされていない JDK 9 以降のモジュールパスで実行する場合、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundleSE を返します。- パラメーター:
reader- ターゲットリソースのリーダー- 戻り値:
- 完全にロードされたバンドル
- 例外:
IOExceptionSE- I/O 障害の場合- 導入:
- 4.2
- 関連事項:
loadBundle
指定された入力ストリームからプロパティベースのリソースバンドルをロードし、JDK 9 以降でデフォルトのプロパティエンコーディングを選択します。これは、"defaultCharset" が
nullに設定されている場合にのみ呼び出され、プラットフォームのデフォルトエンコーディング (JDK 9 以降では UTF-8、ISO-8859-1 フォールバック、ただし "java.util.PropertyResourceBundle.encoding" システムプロパティで設定可能) が明示的に強制されます。このメソッドはResourceBundle.Controlでのみ呼び出せることに注意してください。このような制御ハンドルがサポートされていない JDK 9 以降のモジュールパスで実行する場合、カスタムサブクラスのオーバーライドは事実上無視されます。デフォルトの実装は
PropertyResourceBundleSE を返します。- パラメーター:
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