クラス AbstractMessageSource
- 実装されているすべてのインターフェース:
- HierarchicalMessageSource,- MessageSource
HierarchicalMessageSource インターフェースの抽象的な実装、メッセージバリアントの一般的な処理の実装、具体的な MessageSource の特定の戦略の実装を容易にします。 サブクラスは抽象 resolveCode(java.lang.String, java.util.Locale) メソッドを実装する必要があります。引数なしのメッセージを効率的に解決するには、resolveCodeWithoutArguments(java.lang.String, java.util.Locale) メソッドもオーバーライドして、MessageFormat を使用せずにメッセージを解決する必要があります。
注意 : デフォルトでは、メッセージに引数が渡された場合、メッセージテキストは MessageFormat を通じてのみ解析されます。引数がない場合、メッセージテキストはそのまま返されます。実際の引数があるメッセージに対してのみ MessageFormat エスケープを使用し、その他のメッセージはエスケープしないままにする必要があります。すべてのメッセージをエスケープする場合は、"alwaysUseMessageFormat" フラグを "true" に設定します。
MessageSourceResolvables をプライマリメッセージとしてサポートするだけでなく、MessageSourceResolvables 自体であるメッセージ引数の解決もサポートします。
このクラスはコードごとのメッセージのキャッシュを実装しません。サブクラスはメッセージを時間とともに動的に変更できます。サブクラスでは、変更を意識した方法でメッセージをキャッシュすることをお勧めします。これにより、更新されたメッセージのホットデプロイが可能になります。
- フィールドのサマリー- クラス org.springframework.context.support.MessageSourceSupport から継承されたフィールド- logger
- コンストラクターの概要コンストラクター
- メソッドのサマリー修飾子と型メソッド説明- protected PropertiesSEロケールに依存しない共通メッセージがあれば、それを定義する Properties オブジェクトを返します。- protected StringSE- getDefaultMessage- (StringSE code) 指定されたコードのフォールバックデフォルトメッセージがあれば、それを返します。- protected StringSE- getDefaultMessage- (MessageSourceResolvable resolvable, LocaleSE locale) 指定された- MessageSourceResolvableのデフォルトメッセージを取得します。- final StringSE- getMessage- (StringSE code, ObjectSE[] args, StringSE defaultMessage, LocaleSE locale) メッセージの解決を試みます。- final StringSE- getMessage- (StringSE code, ObjectSE[] args, LocaleSE locale) メッセージの解決を試みます。- final StringSE- getMessage- (MessageSourceResolvable resolvable, LocaleSE locale) 渡された- MessageSourceResolvable引数内に含まれるすべての属性を使用して、メッセージの解決を試みます。- protected StringSE- getMessageFromParent- (StringSE code, ObjectSE[] args, LocaleSE locale) 指定されたメッセージを親- MessageSourceから取得しようとします(存在する場合)。- protected StringSE- getMessageInternal- (StringSE code, ObjectSE[] args, LocaleSE locale) 指定されたロケールでメッセージとして指定されたコードと引数を解決し、見つからない場合は- nullを返します。この MessageSource の親、または存在しない場合は- nullを返します。- protected booleanNoSuchMessageException をスローする代わりに、デフォルトメッセージとしてメッセージコードを使用するかどうかを返します。- protected ObjectSE[]- resolveArguments- (ObjectSE[] args, LocaleSE locale) 指定されたオブジェクトの配列を検索し、MessageSourceResolvable オブジェクトを見つけて解決します。- protected abstract MessageFormatSE- resolveCode- (StringSE code, LocaleSE locale) サブクラスは、メッセージを解決するためにこのメソッドを実装する必要があります。- protected StringSE- resolveCodeWithoutArguments- (StringSE code, LocaleSE locale) サブクラスはこのメソッドをオーバーライドして、引数なしで最適化された方法でメッセージを解決できます。- void- setCommonMessages- (PropertiesSE commonMessages) ロケールに依存しない共通メッセージを指定します。メッセージコードをキーとして、メッセージストリング全体(引数プレースホルダーを含む場合があります)を値として使用します。- void- setParentMessageSource- (MessageSource parent) このオブジェクトが解決できないメッセージを解決しようとするために使用される親を設定します。- void- setUseCodeAsDefaultMessage- (boolean useCodeAsDefaultMessage) NoSuchMessageException をスローする代わりに、メッセージコードをデフォルトメッセージとして使用するかどうかを設定します。- クラス org.springframework.context.support.MessageSourceSupport から継承されたメソッド- createMessageFormat, formatMessage, isAlwaysUseMessageFormat, renderDefaultMessage, setAlwaysUseMessageFormat
- コンストラクターの詳細- AbstractMessageSourcepublic AbstractMessageSource()
 
- メソッドの詳細- setParentMessageSourceインターフェースからコピーされた説明:- HierarchicalMessageSourceこのオブジェクトが解決できないメッセージを解決しようとするために使用される親を設定します。- 次で指定:
-  インターフェース HierarchicalMessageSourceのsetParentMessageSource
- パラメーター:
- parent- このオブジェクトが解決できないメッセージを解決するために使用される親 MessageSource- nullの場合があり、その場合、それ以上の解決は不可能です。
 
- getParentMessageSourceインターフェースからコピーされた説明:- HierarchicalMessageSourceこの MessageSource の親、または存在しない場合は- nullを返します。- 次で指定:
-  インターフェース HierarchicalMessageSourceのgetParentMessageSource
 
- setCommonMessagesロケールに依存しない共通メッセージを指定します。メッセージコードをキーとして、メッセージストリング全体(引数プレースホルダーを含む場合があります)を値として使用します。- 外部で定義された Properties オブジェクト(例: - PropertiesFactoryBeanによって定義されます。
- getCommonMessagesロケールに依存しない共通メッセージがあれば、それを定義する Properties オブジェクトを返します。
- setUseCodeAsDefaultMessagepublic void setUseCodeAsDefaultMessage- (boolean useCodeAsDefaultMessage) NoSuchMessageException をスローする代わりに、メッセージコードをデフォルトメッセージとして使用するかどうかを設定します。開発とデバッグに役立ちます。デフォルトは "false" です。- メモ: 親 MessageSource を持っている(FieldError のような)複数のコードと MessageSourceResolvable と MessageSource の場合は、 親に "useCodeAsDefaultMessage" を活性化しません : それ以外の場合は、親からメッセージとして返された最初のコードを取得しますが、それ以上のコードをチェックすることはありません。 - 親で "useCodeAsDefaultMessage" をオンにして作業できるように、AbstractMessageSource および AbstractApplicationContext には、使用可能な場合は内部 - getMessageInternal(java.lang.String, java.lang.Object[], java.util.Locale)メソッドに委譲するための特別なチェックが含まれています。一般的には、開発中に "useCodeAsDefaultMessage" を使用することをお勧めしますが、そもそも本番環境では使用しないでください。
- isUseCodeAsDefaultMessageprotected boolean isUseCodeAsDefaultMessage()NoSuchMessageException をスローする代わりに、デフォルトメッセージとしてメッセージコードを使用するかどうかを返します。開発とデバッグに役立ちます。デフォルトは "false" です。- または、 - getDefaultMessage(org.springframework.context.MessageSourceResolvable, java.util.Locale)メソッドをオーバーライドして、解決できないコードのカスタムフォールバックメッセージを返すことを検討してください。
- getMessage@Nullable public final StringSE getMessage- (StringSE code, @Nullable ObjectSE[] args, @Nullable StringSE defaultMessage, LocaleSE locale) インターフェースからコピーされた説明:- MessageSourceメッセージの解決を試みます。メッセージが見つからなかった場合、デフォルトのメッセージを返します。- 次で指定:
-  インターフェース MessageSourceのgetMessage
- パラメーター:
- code- 検索するメッセージコード。"calculator.noRateSet"。MessageSource ユーザーは、潜在的な競合を回避し、最大限の明確性を確保して、修飾されたクラスまたはパッケージ名に基づいてメッセージ名を作成することをお勧めします。
- args- メッセージ内のパラメーター(パラメーターはメッセージ内で "{0}", "{1,date}", "{2,time}" のように見えます)、または存在しない場合は- nullに入力される引数の配列
- defaultMessage- ルックアップが失敗した場合に返すデフォルトのメッセージ
- locale- ルックアップを行うロケール
- 戻り値:
-  検索が成功した場合は解決されたメッセージ、そうでない場合はパラメーターとして渡されたデフォルトのメッセージ (nullの可能性があります)
- 関連事項:
 
- getMessagepublic final StringSE getMessage- (StringSE code, @Nullable ObjectSE[] args, LocaleSE locale) throws NoSuchMessageException インターフェースからコピーされた説明:- MessageSourceメッセージの解決を試みます。メッセージが見つからない場合はエラーとして扱います。- 次で指定:
-  インターフェース MessageSourceのgetMessage
- パラメーター:
- code- 検索するメッセージコード。"calculator.noRateSet"。MessageSource ユーザーは、潜在的な競合を回避し、最大限の明確性を確保して、修飾されたクラスまたはパッケージ名に基づいてメッセージ名を作成することをお勧めします。
- args- メッセージ内のパラメーター(パラメーターはメッセージ内で "{0}", "{1,date}", "{2,time}" のように見えます)、または存在しない場合は- nullに入力される引数の配列
- locale- ルックアップを行うロケール
- 戻り値:
-  解決されたメッセージ (非 null)
- 例外:
- NoSuchMessageException- 対応するメッセージが見つからなかった場合
- 関連事項:
 
- getMessagepublic final StringSE getMessage- (MessageSourceResolvable resolvable, LocaleSE locale) throws NoSuchMessageException インターフェースからコピーされた説明:- MessageSource渡された- MessageSourceResolvable引数内に含まれるすべての属性を使用して、メッセージの解決を試みます。- NOTE: このメソッドを呼び出す時点で、解決可能なオブジェクトの - defaultMessageプロパティが- nullであるかどうかを判断できないため、このメソッドで- NoSuchMessageExceptionをスローする必要があります。- 次で指定:
-  インターフェース MessageSourceのgetMessage
- パラメーター:
- resolvable- メッセージの解決に必要な属性を格納する値オブジェクト (デフォルトのメッセージを含めることができます)
- locale- ルックアップを行うロケール
- 戻り値:
-  解決されたメッセージ (MessageSourceResolvable-provided のデフォルトメッセージでさえ null 以外である必要があるため、nullを使用しない)
- 例外:
- NoSuchMessageException- 対応するメッセージが見つからなかった場合 (- MessageSourceResolvableによって提供されるデフォルトメッセージはありません)
- 関連事項:
 
- getMessageInternal@Nullable protected StringSE getMessageInternal- (@Nullable StringSE code, @Nullable ObjectSE[] args, @Nullable LocaleSE locale) 指定されたロケールでメッセージとして指定されたコードと引数を解決し、見つからない場合は- nullを返します。デフォルトメッセージとしてコードにフォールバックしません。- getMessageメソッドによって呼び出されます。- パラメーター:
- code- "calculator.noRateSet" などのルックアップするコード
- args- メッセージ内のパラメーター用に入力される引数の配列
- locale- ルックアップを行うロケール
- 戻り値:
-  解決されたメッセージ、または見つからない場合は null
- 関連事項:
 
- getMessageFromParent@Nullable protected StringSE getMessageFromParent- (StringSE code, @Nullable ObjectSE[] args, LocaleSE locale) 指定されたメッセージを親- MessageSourceから取得しようとします(存在する場合)。- パラメーター:
- code- "calculator.noRateSet" などのルックアップするコード
- args- メッセージ内のパラメーター用に入力される引数の配列
- locale- ルックアップを行うロケール
- 戻り値:
-  解決されたメッセージ、または見つからない場合は null
- 関連事項:
 
- getDefaultMessage指定された- MessageSourceResolvableのデフォルトメッセージを取得します。- この実装は、使用可能な場合はデフォルトメッセージを完全にレンダリングします。プライマリメッセージコードがデフォルトメッセージとして使用されている場合は、プレーンなデフォルトメッセージ - Stringを返します。- パラメーター:
- resolvable- デフォルトのメッセージを解決する値オブジェクト
- locale- 現在のロケール
- 戻り値:
-  デフォルトのメッセージ、または存在しない場合は null
- 導入:
- 4.3.6
- 関連事項:
 
- getDefaultMessage指定されたコードのフォールバックデフォルトメッセージがあれば、それを返します。- デフォルトでは、"useCodeAsDefaultMessage" がアクティブになっている場合はコード自体を返すか、他のフォールバックを返しません。フォールバックがない場合、呼び出し元は通常 - getMessageから- NoSuchMessageExceptionを受け取ります。- パラメーター:
- code- 解決できず、明示的なデフォルトメッセージを受信しなかったメッセージコード
- 戻り値:
-  使用するデフォルトのメッセージ、または存在しない場合は null
- 関連事項:
 
- resolveArguments指定されたオブジェクトの配列を検索し、MessageSourceResolvable オブジェクトを見つけて解決します。- メッセージに引数として MessageSourceResolvables を含めることができます。 - オーバーライド:
-  クラス MessageSourceSupportのresolveArguments
- パラメーター:
- args- メッセージの引数の配列
- locale- 解決するロケール
- 戻り値:
- MessageSourceResolvables が解決された引数の配列
 
- resolveCodeWithoutArgumentsサブクラスはこのメソッドをオーバーライドして、引数なしで最適化された方法でメッセージを解決できます。つまり、MessageFormat を使用せずに解決できます。- デフォルトの実装では、 - resolveCode(java.lang.String, java.util.Locale)メソッドに委譲することにより、MessageFormat を使用します。サブクラスでは、これを最適化された解決に置き換えることをお勧めします。- 残念ながら、 - java.text.MessageFormatは効率的な方法で実装されていません。特に、そもそもメッセージパターンに引数プレースホルダーが含まれていないことを検出しません。引数のないメッセージの場合は MessageFormat を回避することをお勧めします。- パラメーター:
- code- 解決するメッセージのコード
- locale- コードを解決するロケール (サブクラスは国際化をサポートすることが推奨されます)
- 戻り値:
-  メッセージ文字列、または見つからない場合は null
- 関連事項:
 
- resolveCodeサブクラスは、メッセージを解決するためにこのメソッドを実装する必要があります。- サブクラスで MessageFormats を適切にキャッシュできるように、メッセージ文字列ではなく MessageFormat インスタンスを返します。 - サブクラスは、MessageFormat を含まない、引数のないメッセージの最適化された解決を提供することが推奨されます。詳細については、 - resolveCodeWithoutArguments(java.lang.String, java.util.Locale)javadoc を参照してください。- パラメーター:
- code- 解決するメッセージのコード
- locale- コードを解決するロケール (サブクラスは国際化をサポートすることが推奨されます)
- 戻り値:
-  メッセージの MessageFormat。見つからない場合は null
- 関連事項: