クラス 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 boolean
NoSuchMessageException をスローする代わりに、デフォルトメッセージとしてメッセージコードを使用するかどうかを返します。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
コンストラクターの詳細
AbstractMessageSource
public AbstractMessageSource()
メソッドの詳細
setParentMessageSource
インターフェースからコピーされた説明:HierarchicalMessageSource
このオブジェクトが解決できないメッセージを解決しようとするために使用される親を設定します。- 次で指定:
- インターフェース
HierarchicalMessageSource
のsetParentMessageSource
- パラメーター:
parent
- このオブジェクトが解決できないメッセージを解決するために使用される親 MessageSourcenull
の場合があり、その場合、それ以上の解決は不可能です。
getParentMessageSource
インターフェースからコピーされた説明:HierarchicalMessageSource
この MessageSource の親、または存在しない場合はnull
を返します。- 次で指定:
- インターフェース
HierarchicalMessageSource
のgetParentMessageSource
setCommonMessages
ロケールに依存しない共通メッセージを指定します。メッセージコードをキーとして、メッセージストリング全体(引数プレースホルダーを含む場合があります)を値として使用します。また、たとえば
PropertiesFactoryBean
を通じて定義された、外部で定義された Properties オブジェクトにリンクすることもできます。getCommonMessages
ロケールに依存しない共通メッセージがあれば、それを定義する Properties オブジェクトを返します。setUseCodeAsDefaultMessage
public 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" を使用することをお勧めしますが、そもそも本番環境では使用しないでください。isUseCodeAsDefaultMessage
protected 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
の可能性があります) - 関連事項:
getMessage
public 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
- 対応するメッセージが見つからなかった場合- 関連事項:
getMessage
public 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
- 関連事項: