public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHandler<SimpMessageMappingInfo> implements org.springframework.context.EmbeddedValueResolverAware, org.springframework.context.SmartLifecycle
@MessageMapping
and @SubscribeMapping annotated methods.
Supports Ant-style path patterns with template variables.
logger| Constructor and Description |
|---|
SimpAnnotationMethodMessageHandler(SubscribableChannel clientInboundChannel,
MessageChannel clientOutboundChannel,
SimpMessageSendingOperations brokerTemplate)
Create an instance of SimpAnnotationMethodMessageHandler with the given
message channels and broker messaging template.
|
| Modifier and Type | Method and Description |
|---|---|
protected AbstractExceptionHandlerMethodResolver |
createExceptionHandlerMethodResolverFor(Class<?> beanType) |
org.springframework.core.convert.ConversionService |
getConversionService()
Return the configured
ConversionService. |
protected String |
getDestination(Message<?> message) |
protected Set<String> |
getDirectLookupDestinations(SimpMessageMappingInfo mapping)
Return destinations contained in the mapping that are not patterns and are
therefore suitable for direct lookups.
|
protected Log |
getHandlerMethodLogger()
Return a logger to set on
InvocableHandlerMethod. |
MessageHeaderInitializer |
getHeaderInitializer()
Return the configured header initializer.
|
protected String |
getLookupDestination(String destination)
Check whether the given destination (of an incoming message) matches to
one of the configured destination prefixes and if so return the remaining
portion of the destination after the matched prefix.
|
protected Comparator<SimpMessageMappingInfo> |
getMappingComparator(Message<?> message)
Return a comparator for sorting matching mappings.
|
protected SimpMessageMappingInfo |
getMappingForMethod(Method method,
Class<?> handlerType)
Provide the mapping for a handler method.
|
protected SimpMessageMappingInfo |
getMatchingMapping(SimpMessageMappingInfo mapping,
Message<?> message)
Check if a mapping matches the current message and return a possibly
new mapping with conditions relevant to the current request.
|
MessageConverter |
getMessageConverter()
Return the configured
MessageConverter. |
org.springframework.util.PathMatcher |
getPathMatcher()
Return the PathMatcher implementation to use for matching destinations.
|
protected Log |
getReturnValueHandlerLogger()
Return a logger to set on
HandlerMethodReturnValueHandlerComposite. |
org.springframework.validation.Validator |
getValidator()
Return the configured Validator instance.
|
protected void |
handleMatch(SimpMessageMappingInfo mapping,
HandlerMethod handlerMethod,
String lookupDestination,
Message<?> message) |
protected List<HandlerMethodArgumentResolver> |
initArgumentResolvers()
Return the list of argument resolvers to use.
|
protected List<? extends HandlerMethodReturnValueHandler> |
initReturnValueHandlers()
Return the list of return value handlers to use.
|
protected boolean |
isHandler(Class<?> beanType)
Whether the given bean type should be introspected for messaging handling methods.
|
boolean |
isRunning() |
protected String[] |
resolveEmbeddedValuesInDestinations(String[] destinations)
Resolve placeholder values in the given array of destinations.
|
void |
setConversionService(org.springframework.core.convert.ConversionService conversionService)
Configure a
ConversionService to use when resolving method arguments,
for example message header values. |
void |
setDestinationPrefixes(Collection<String> prefixes)
When this property is configured only messages to destinations matching
one of the configured prefixes are eligible for handling.
|
void |
setEmbeddedValueResolver(org.springframework.util.StringValueResolver resolver) |
void |
setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure a
MessageHeaderInitializer to pass on to
HandlerMethodReturnValueHandlers
that send messages from controller return values. |
void |
setMessageConverter(MessageConverter converter)
Configure a
MessageConverter to use to convert the payload of a message from
its serialized form with a specific MIME type to an Object matching the target method
parameter. |
void |
setPathMatcher(org.springframework.util.PathMatcher pathMatcher)
Set the PathMatcher implementation to use for matching destinations
against configured destination patterns.
|
void |
setValidator(org.springframework.validation.Validator validator)
Set the Validator instance used for validating
@Payload arguments. |
void |
start() |
void |
stop() |
void |
stop(Runnable callback) |
afterPropertiesSet, createHandlerMethod, detectHandlerMethods, getApplicationContext, getArgumentResolvers, getCustomArgumentResolvers, getCustomReturnValueHandlers, getDestinationPrefixes, getExceptionHandlerMethod, getHandlerMethods, getReturnValueHandlers, handleMessage, handleMessageInternal, handleNoMatch, processHandlerMethodException, registerExceptionHandlerAdvice, registerHandlerMethod, setApplicationContext, setArgumentResolvers, setCustomArgumentResolvers, setCustomReturnValueHandlers, setReturnValueHandlers, toStringpublic SimpAnnotationMethodMessageHandler(SubscribableChannel clientInboundChannel, MessageChannel clientOutboundChannel, SimpMessageSendingOperations brokerTemplate)
clientInboundChannel - the channel for receiving messages from clients (e.g. WebSocket clients)clientOutboundChannel - the channel for messages to clients (e.g. WebSocket clients)brokerTemplate - a messaging template to send application messages to the brokerpublic void setDestinationPrefixes(@Nullable
Collection<String> prefixes)
By default, no prefixes are configured in which case all messages are eligible for handling.
Destination prefixes are expected to be slash-separated Strings and therefore a slash is automatically appended where missing to ensure a proper prefix-based match (i.e. matching complete segments).
Note however that the remaining portion of a destination after the
prefix may use a different separator (e.g. commonly "." in messaging)
depending on the configured PathMatcher.
setDestinationPrefixes in class AbstractMethodMessageHandler<SimpMessageMappingInfo>public void setMessageConverter(MessageConverter converter)
MessageConverter to use to convert the payload of a message from
its serialized form with a specific MIME type to an Object matching the target method
parameter. The converter is also used when sending a message to the message broker.CompositeMessageConverterpublic MessageConverter getMessageConverter()
MessageConverter.public void setConversionService(org.springframework.core.convert.ConversionService conversionService)
ConversionService to use when resolving method arguments,
for example message header values.
By default, DefaultFormattingConversionService is used.
public org.springframework.core.convert.ConversionService getConversionService()
ConversionService.public void setPathMatcher(org.springframework.util.PathMatcher pathMatcher)
By default, AntPathMatcher is used.
public org.springframework.util.PathMatcher getPathMatcher()
@Nullable public org.springframework.validation.Validator getValidator()
public void setValidator(@Nullable
org.springframework.validation.Validator validator)
@Payload arguments.Validated,
PayloadMethodArgumentResolverpublic void setEmbeddedValueResolver(org.springframework.util.StringValueResolver resolver)
setEmbeddedValueResolver in interface org.springframework.context.EmbeddedValueResolverAwarepublic void setHeaderInitializer(@Nullable
MessageHeaderInitializer headerInitializer)
MessageHeaderInitializer to pass on to
HandlerMethodReturnValueHandlers
that send messages from controller return values.
By default, this property is not set.
@Nullable public MessageHeaderInitializer getHeaderInitializer()
public final void start()
start in interface org.springframework.context.Lifecyclepublic final void stop()
stop in interface org.springframework.context.Lifecyclepublic final void stop(Runnable callback)
stop in interface org.springframework.context.SmartLifecyclepublic final boolean isRunning()
isRunning in interface org.springframework.context.Lifecycleprotected List<HandlerMethodArgumentResolver> initArgumentResolvers()
AbstractMethodMessageHandlerAbstractMethodMessageHandler.setArgumentResolvers(java.util.List<org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver>).
Subclasses should also take into account custom argument types configured via
AbstractMethodMessageHandler.setCustomArgumentResolvers(java.util.List<org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver>).
initArgumentResolvers in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected List<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers()
AbstractMethodMessageHandlerAbstractMethodMessageHandler.setReturnValueHandlers(java.util.List<org.springframework.messaging.handler.invocation.HandlerMethodReturnValueHandler>).
Subclasses should also take into account custom return value types configured
via AbstractMethodMessageHandler.setCustomReturnValueHandlers(java.util.List<org.springframework.messaging.handler.invocation.HandlerMethodReturnValueHandler>).
initReturnValueHandlers in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected Log getReturnValueHandlerLogger()
AbstractMethodMessageHandlerHandlerMethodReturnValueHandlerComposite.getReturnValueHandlerLogger in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected Log getHandlerMethodLogger()
AbstractMethodMessageHandlerInvocableHandlerMethod.getHandlerMethodLogger in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected boolean isHandler(Class<?> beanType)
AbstractMethodMessageHandlerisHandler in class AbstractMethodMessageHandler<SimpMessageMappingInfo>@Nullable protected SimpMessageMappingInfo getMappingForMethod(Method method, Class<?> handlerType)
AbstractMethodMessageHandlergetMappingForMethod in class AbstractMethodMessageHandler<SimpMessageMappingInfo>method - the method to provide a mapping forhandlerType - the handler type, possibly a sub-type of the method's declaring classnull if the method is not mappedprotected String[] resolveEmbeddedValuesInDestinations(String[] destinations)
protected Set<String> getDirectLookupDestinations(SimpMessageMappingInfo mapping)
AbstractMethodMessageHandlergetDirectLookupDestinations in class AbstractMethodMessageHandler<SimpMessageMappingInfo>@Nullable protected String getDestination(Message<?> message)
getDestination in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected String getLookupDestination(@Nullable String destination)
AbstractMethodMessageHandlerIf there are no matching prefixes, return null.
If there are no destination prefixes, return the destination as is.
getLookupDestination in class AbstractMethodMessageHandler<SimpMessageMappingInfo>@Nullable protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message<?> message)
AbstractMethodMessageHandlergetMatchingMapping in class AbstractMethodMessageHandler<SimpMessageMappingInfo>mapping - the mapping to get a match formessage - the message being handlednull if there is no matchprotected Comparator<SimpMessageMappingInfo> getMappingComparator(Message<?> message)
AbstractMethodMessageHandlergetMappingComparator in class AbstractMethodMessageHandler<SimpMessageMappingInfo>message - the current Messagenullprotected void handleMatch(SimpMessageMappingInfo mapping, HandlerMethod handlerMethod, String lookupDestination, Message<?> message)
handleMatch in class AbstractMethodMessageHandler<SimpMessageMappingInfo>protected AbstractExceptionHandlerMethodResolver createExceptionHandlerMethodResolverFor(Class<?> beanType)
createExceptionHandlerMethodResolverFor in class AbstractMethodMessageHandler<SimpMessageMappingInfo>