public class MessageHeaderAccessor extends ObjectSE
メソッド getMessageHeaders() は、基礎となる、完全に準備された MessageHeaders へのアクセスを提供します。これをそのまま(つまり、コピーせずに)使用して、次のように単一のメッセージを作成できます。
MessageHeaderAccessor accessor = new MessageHeaderAccessor();
accessor.setHeader("foo", "bar");
Message message = MessageBuilder.createMessage("payload", accessor.getMessageHeaders());
上記の後、デフォルトで MessageHeaderAccessor は不変になります。ただし、同じスレッドでさらに初期化できるように変更可能にしておくこともできます。例:
MessageHeaderAccessor accessor = new MessageHeaderAccessor();
accessor.setHeader("foo", "bar");
accessor.setLeaveMutable(true);
Message message = MessageBuilder.createMessage("payload", accessor.getMessageHeaders());
// later on in the same thread...
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message);
accessor.setHeader("bar", "baz");
accessor.setImmutable();
メソッド toMap() は、基礎となるヘッダーのコピーを返します。同じ MessageHeaderAccessor インスタンスから複数のメッセージを準備するために使用できます。
MessageHeaderAccessor accessor = new MessageHeaderAccessor();
MessageBuilder builder = MessageBuilder.withPayload("payload").setHeaders(accessor);
accessor.setHeader("foo", "bar1");
Message message1 = builder.build();
accessor.setHeader("foo", "bar2");
Message message2 = builder.build();
accessor.setHeader("foo", "bar3");
Message message3 = builder.build();
ただし、上記のスタイルでは、ヘッダーアクセサーは共有され、後で再取得することはできません。あるいは、メッセージごとに 1 つの MessageHeaderAccessor を作成することもできます。
MessageHeaderAccessor accessor1 = new MessageHeaderAccessor();
accessor.set("foo", "bar1");
Message message1 = MessageBuilder.createMessage("payload", accessor1.getMessageHeaders());
MessageHeaderAccessor accessor2 = new MessageHeaderAccessor();
accessor.set("foo", "bar2");
Message message2 = MessageBuilder.createMessage("payload", accessor2.getMessageHeaders());
MessageHeaderAccessor accessor3 = new MessageHeaderAccessor();
accessor.set("foo", "bar3");
Message message3 = MessageBuilder.createMessage("payload", accessor3.getMessageHeaders());
上記の例は、ヘッダーアクセサーを使用する一般的なアイデアを示すことを目的としています。ただし、最も可能性が高いのはサブクラスです。
| 修飾子と型 | フィールドと説明 |
|---|---|
static CharsetSE | DEFAULT_CHARSET |
| コンストラクターと説明 |
|---|
MessageHeaderAccessor() 新しいヘッダーを作成するコンストラクター。 |
MessageHeaderAccessor(Message<?> message) コピーする既存のメッセージのヘッダーを受け入れるコンストラクター。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | copyHeaders(MapSE<StringSE,?> headersToCopy) 提供されたマップから名前と値のペアをコピーします。 |
void | copyHeadersIfAbsent(MapSE<StringSE,?> headersToCopy) 提供されたマップから名前と値のペアをコピーします。 |
protected MessageHeaderAccessor | createAccessor(Message<?> message) 指定されたメッセージの「ネストされた」アクセサーを構築します。 |
static <T extends MessageHeaderAccessor> | getAccessor(Message<?> message, ClassSE<T> requiredType) 指定された Message のヘッダーの作成に使用された元の MessageHeaderAccessor を返します。または、null が利用できない場合、またはその型が必要な型と一致しない場合は、null を返します。 |
static <T extends MessageHeaderAccessor> | getAccessor(MessageHeaders messageHeaders, ClassSE<T> requiredType)Message の代わりに MessageHeaders インスタンスを持つ getAccessor(org.springframework.messaging.Message, Class) のバリエーション。 |
MimeType | getContentType() |
StringSE | getDetailedLogMessage(ObjectSE payload) ロギングの目的で、より詳細なメッセージを返します。 |
protected StringSE | getDetailedPayloadLogMessage(ObjectSE payload) |
ObjectSE | getErrorChannel() |
ObjectSE | getHeader(StringSE headerName) 指定された名前のヘッダーの値を取得します。 |
UUIDSE | getId() |
MessageHeaders | getMessageHeaders() 基になる MessageHeaders インスタンスを返します。 |
static MessageHeaderAccessor | getMutableAccessor(Message<?> message) メッセージヘッダーを作成するために使用されるアクセサーの型と一致しようとする、またはメッセージを MessageHeaderAccessor インスタンスでラップする、指定されたメッセージの可変 MessageHeaderAccessor を返します。 |
ObjectSE | getReplyChannel() |
StringSE | getShortLogMessage(ObjectSE payload) ロギングのために簡潔なメッセージを返します。 |
protected StringSE | getShortPayloadLogMessage(ObjectSE payload) |
LongSE | getTimestamp() |
boolean | isModified() 基になるメッセージヘッダーが変更済みとしてマークされているかどうかを確認します。 |
boolean | isMutable() 基になるヘッダーを引き続き変更できるかどうか。 |
protected boolean | isReadableContentType() |
protected boolean | isReadOnly(StringSE headerName) |
void | removeHeader(StringSE headerName) 指定されたヘッダー名の値を削除します。 |
void | removeHeaders(StringSE... headerPatterns)'headerPatterns' の配列を介して提供されるすべてのヘッダーを削除します。 |
void | setContentType(MimeType contentType) |
void | setErrorChannel(MessageChannel errorChannel) |
void | setErrorChannelName(StringSE errorChannelName) |
void | setHeader(StringSE name, ObjectSE value) 指定されたヘッダー名の値を設定します。 |
void | setHeaderIfAbsent(StringSE name, ObjectSE value) ヘッダー名がまだ値に関連付けられていない場合にのみ、指定されたヘッダー名の値を設定します。 |
void | setImmutable() デフォルトでは、 getMessageHeaders() が呼び出されると、"this" MessageHeaderAccessor インスタンスを使用して基になるメッセージヘッダーを変更することはできなくなります。 |
void | setLeaveMutable(boolean leaveMutable) デフォルトでは、 getMessageHeaders() が呼び出されると、"this" MessageHeaderAccessor インスタンスを使用して基になるメッセージヘッダーを変更することはできなくなり、返される MessageHeaders は不変になります。 |
protected void | setModified(boolean modified) 基になるメッセージヘッダーを変更済みとしてマークします。 |
void | setReplyChannel(MessageChannel replyChannel) |
void | setReplyChannelName(StringSE replyChannelName) |
MapSE<StringSE, ObjectSE> | toMap() 基本となるヘッダー値のコピーをプレーンな MapSE オブジェクトとして返します。 |
MessageHeaders | toMessageHeaders() 基になるヘッダー値のコピーを MessageHeaders オブジェクトとして返します。 |
StringSE | toString() |
protected void | verifyType(StringSE headerName, ObjectSE headerValue) |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSEpublic static final CharsetSE DEFAULT_CHARSET
public MessageHeaderAccessor()
public MessageHeaderAccessor(Message<?> message)
message - ヘッダーをコピーするメッセージ、ない場合は null protected MessageHeaderAccessor createAccessor(Message<?> message)
message - 新しいアクセサーを構築するためのメッセージ public void setLeaveMutable(boolean leaveMutable)
getMessageHeaders() が呼び出されると、"this" MessageHeaderAccessor インスタンスを使用して基になるメッセージヘッダーを変更することはできなくなり、返される MessageHeaders は不変になります。 ただし、これが true に設定されている場合、返される(基になる) MessageHeaders インスタンスは変更可能なままです。さらに変更を加えるには、引き続き同じアクセサーインスタンスを使用するか、次の方法で再度取得します。
MessageHeaderAccessor.getAccessor(Message, Class)
変更が完了したら、setImmutable() を使用してそれ以上変更されないようにします。このメカニズムの使用目的は、単一スレッド内でのメッセージの初期化です。
デフォルトでは、これは false に設定されています。
public void setImmutable()
getMessageHeaders() が呼び出されると、"this" MessageHeaderAccessor インスタンスを使用して基になるメッセージヘッダーを変更することはできなくなります。ただし、setLeaveMutable(boolean) を使用する場合、このメソッドは、MessageHeaders インスタンスを変更する必要がなくなる時期を明示的に示すために必要です。public boolean isMutable()
protected void setModified(boolean modified)
modified - 通常、フラグをリセットするには true または false public boolean isModified()
true、それ以外の場合は false public MessageHeaders getMessageHeaders()
MessageHeaders インスタンスを返します。setLeaveMutable(boolean) が true に設定されていない限り、この呼び出しの後、ヘッダーは不変であり、このアクセサーはヘッダーを変更できなくなります。
このメソッドは、複数回呼び出された場合、常に同じ MessageHeaders インスタンスを返します。基になるヘッダーのコピーを取得するには、代わりに toMessageHeaders() または toMap() を使用します。
public MessageHeaders toMessageHeaders()
MessageHeaders オブジェクトとして返します。このメソッドは何度も呼び出すことができ、その間に変更を加えると、新しい呼び出しごとに現在のヘッダー値の新しいコピーが返されます。
public MapSE<StringSE,ObjectSE> toMap()
MapSE オブジェクトとして返します。このメソッドは何度も呼び出すことができ、その間に変更を加えると、新しい呼び出しごとに現在のヘッダー値の新しいコピーが返されます。
public ObjectSE getHeader(StringSE headerName)
headerName - ヘッダーの名前 null public void setHeader(StringSE name, ObjectSE value)
指定された値が null の場合、ヘッダーは削除されます。
public void setHeaderIfAbsent(StringSE name, ObjectSE value)
public void removeHeader(StringSE headerName)
public void removeHeaders(StringSE... headerPatterns)
名前が示すように、配列にはヘッダー名の単純な一致パターンが含まれる場合があります。サポートされているパターンスタイルは、"xxx*"、"*xxx"、"*xxx*"、"xxx* yyy" です。
public void copyHeaders(MapSE<StringSE,?> headersToCopy)
この操作は既存の値を上書きします。値の上書きを回避するには、copyHeadersIfAbsent(Map) を使用してください。
public void copyHeadersIfAbsent(MapSE<StringSE,?> headersToCopy)
この操作では、既存の値は上書きされません。
protected boolean isReadOnly(StringSE headerName)
public UUIDSE getId()
public LongSE getTimestamp()
public void setContentType(MimeType contentType)
public MimeType getContentType()
public void setReplyChannelName(StringSE replyChannelName)
public void setReplyChannel(MessageChannel replyChannel)
public ObjectSE getReplyChannel()
public void setErrorChannelName(StringSE errorChannelName)
public void setErrorChannel(MessageChannel errorChannel)
public ObjectSE getErrorChannel()
public StringSE getShortLogMessage(ObjectSE payload)
payload - ヘッダーに対応するペイロード。public StringSE getDetailedLogMessage(ObjectSE payload)
payload - ヘッダーに対応するペイロード。protected boolean isReadableContentType()
public StringSE toString()
ObjectSE の toStringSE public static <T extends MessageHeaderAccessor> T getAccessor(Message<?> message, ClassSE<T> requiredType)
Message のヘッダーの作成に使用された元の MessageHeaderAccessor を返します。または、null が利用できない場合、またはその型が必要な型と一致しない場合は、null を返します。これは、アクセサーの存在が強く期待される場合(アサーションが続く)、またはそれ以外の場合にアクセサーが作成される場合です。
message - アクセサーを取得するメッセージ requiredType - 必要なアクセサー型 (または null for any)null public static <T extends MessageHeaderAccessor> T getAccessor(MessageHeaders messageHeaders, ClassSE<T> requiredType)
Message の代わりに MessageHeaders インスタンスを持つ getAccessor(org.springframework.messaging.Message, Class) のバリエーション。これは、完全なメッセージがまだ作成されていない場合があるためです。
messageHeaders - アクセサーを取得するメッセージヘッダー requiredType - 必要なアクセサー型 (または null for any)null public static MessageHeaderAccessor getMutableAccessor(Message<?> message)
MessageHeaderAccessor インスタンスでラップする、指定されたメッセージの可変 MessageHeaderAccessor を返します。これは、ダウンストリーム処理のためにアクセサー型を保持しながら、汎用コードでヘッダーを更新する必要がある場合のためです。
null)