类 SimpAnnotationMethodMessageHandler
- java.lang.Object
- org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler<SimpMessageMappingInfo>
- org.springframework.messaging.simp.annotation.support.SimpAnnotationMethodMessageHandler
- 所有已实现的接口:
Aware
,InitializingBean
,ApplicationContextAware
,EmbeddedValueResolverAware
,Lifecycle
,Phased
,SmartLifecycle
,MessageHandler
public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHandler<SimpMessageMappingInfo> implements EmbeddedValueResolverAware, SmartLifecycle
A handler for messages delegating to@MessageMapping
and@SubscribeMapping
annotated methods.Supports Ant-style path patterns with template variables.
- 从以下版本开始:
- 4.0
- 作者:
- Rossen Stoyanchev, Brian Clozel, Juergen Hoeller
字段概要
从类继承的字段 org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler
logger
构造器概要
构造器 构造器 说明 SimpAnnotationMethodMessageHandler(SubscribableChannel clientInboundChannel, MessageChannel clientOutboundChannel, SimpMessageSendingOperations brokerTemplate)
Create an instance of SimpAnnotationMethodMessageHandler with the given message channels and broker messaging template.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected AbstractExceptionHandlerMethodResolver
createExceptionHandlerMethodResolverFor(Class<?> beanType)
ConversionService
getConversionService()
Return the configuredConversionService
.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.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 configuredMessageConverter
.PathMatcher
getPathMatcher()
Return the PathMatcher implementation to use for matching destinations.int
getPhase()
Return the phase value of this object.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.boolean
isAutoStartup()
Returnstrue
if thisLifecycle
component should get started automatically by the container at the time that the containingApplicationContext
gets refreshed.protected boolean
isHandler(Class<?> beanType)
Whether the given bean type should be introspected for messaging handling methods.boolean
isRunning()
Check whether this component is currently running.protected String[]
resolveEmbeddedValuesInDestinations(String[] destinations)
Resolve placeholder values in the given array of destinations.void
setConversionService(ConversionService conversionService)
Configure aConversionService
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(StringValueResolver resolver)
Set the StringValueResolver to use for resolving embedded definition values.void
setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure aMessageHeaderInitializer
to pass on toHandlerMethodReturnValueHandler
s that send messages from controller return values.void
setMessageConverter(MessageConverter converter)
Configure aMessageConverter
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(PathMatcher pathMatcher)
Set the PathMatcher implementation to use for matching destinations against configured destination patterns.void
setValidator(Validator validator)
Set the Validator instance used for validating@Payload
arguments.void
start()
Start this component.void
stop()
Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method.void
stop(Runnable callback)
Indicates that a Lifecycle component must stop if it is currently running.从类继承的方法 org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler
afterPropertiesSet, createHandlerMethod, detectHandlerMethods, getApplicationContext, getArgumentResolvers, getCustomArgumentResolvers, getCustomReturnValueHandlers, getDestinationPrefixes, getExceptionHandlerMethod, getHandlerMethods, getReturnValueHandlers, handleMessage, handleMessageInternal, handleNoMatch, processHandlerMethodException, registerExceptionHandlerAdvice, registerHandlerMethod, setApplicationContext, setArgumentResolvers, setCustomArgumentResolvers, setCustomReturnValueHandlers, setReturnValueHandlers, toString
构造器详细资料
SimpAnnotationMethodMessageHandler
public SimpAnnotationMethodMessageHandler(SubscribableChannel clientInboundChannel, MessageChannel clientOutboundChannel, SimpMessageSendingOperations brokerTemplate)
Create an instance of SimpAnnotationMethodMessageHandler with the given message channels and broker messaging template.- 参数:
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 broker
方法详细资料
setDestinationPrefixes
public void setDestinationPrefixes(Collection<String> prefixes)
When this property is configured only messages to destinations matching one of the configured prefixes are eligible for handling. When there is a match the prefix is removed and only the remaining part of the destination is used for method-mapping purposes.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
.
setMessageConverter
public void setMessageConverter(MessageConverter converter)
Configure aMessageConverter
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.
getMessageConverter
public MessageConverter getMessageConverter()
Return the configuredMessageConverter
.
setConversionService
public void setConversionService(ConversionService conversionService)
Configure aConversionService
to use when resolving method arguments, for example message header values.By default,
DefaultFormattingConversionService
is used.
getConversionService
public ConversionService getConversionService()
Return the configuredConversionService
.
setPathMatcher
public void setPathMatcher(PathMatcher pathMatcher)
Set the PathMatcher implementation to use for matching destinations against configured destination patterns.By default,
AntPathMatcher
is used.
getPathMatcher
public PathMatcher getPathMatcher()
Return the PathMatcher implementation to use for matching destinations.
getValidator
public Validator getValidator()
Return the configured Validator instance.
setValidator
public void setValidator(Validator validator)
Set the Validator instance used for validating@Payload
arguments.
setEmbeddedValueResolver
public void setEmbeddedValueResolver(StringValueResolver resolver)
从接口复制的说明:EmbeddedValueResolverAware
Set the StringValueResolver to use for resolving embedded definition values.
setHeaderInitializer
public void setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure aMessageHeaderInitializer
to pass on toHandlerMethodReturnValueHandler
s that send messages from controller return values.By default, this property is not set.
getHeaderInitializer
public MessageHeaderInitializer getHeaderInitializer()
Return the configured header initializer.
isAutoStartup
public boolean isAutoStartup()
从接口复制的说明:SmartLifecycle
Returnstrue
if thisLifecycle
component should get started automatically by the container at the time that the containingApplicationContext
gets refreshed.A value of
false
indicates that the component is intended to be started through an explicitLifecycle.start()
call instead, analogous to a plainLifecycle
implementation.
start
public final void start()
从接口复制的说明:Lifecycle
Start this component.Should not throw an exception if the component is already running.
In the case of a container, this will propagate the start signal to all components that apply.
- 指定者:
start
在接口中Lifecycle
- 另请参阅:
SmartLifecycle.isAutoStartup()
stop
public final void stop()
从接口复制的说明:Lifecycle
Stop this component, typically in a synchronous fashion, such that the component is fully stopped upon return of this method. Consider implementingSmartLifecycle
and itsstop(Runnable)
variant when asynchronous stop behavior is necessary.Note that this stop notification is not guaranteed to come before destruction: On regular shutdown,
Lifecycle
beans will first receive a stop notification before the general destruction callbacks are being propagated; however, on hot refresh during a context's lifetime or on aborted refresh attempts, a given bean's destroy method will be called without any consideration of stop signals upfront.Should not throw an exception if the component is not running (not started yet).
In the case of a container, this will propagate the stop signal to all components that apply.
- 指定者:
stop
在接口中Lifecycle
- 另请参阅:
SmartLifecycle.stop(Runnable)
,DisposableBean.destroy()
stop
public final void stop(Runnable callback)
从接口复制的说明:SmartLifecycle
Indicates that a Lifecycle component must stop if it is currently running.The provided callback is used by the
LifecycleProcessor
to support an ordered, and potentially concurrent, shutdown of all components having a common shutdown order value. The callback must be executed after theSmartLifecycle
component does indeed stop.The
LifecycleProcessor
will call only this variant of thestop
method; i.e.Lifecycle.stop()
will not be called forSmartLifecycle
implementations unless explicitly delegated to within the implementation of this method.- 指定者:
stop
在接口中SmartLifecycle
- 另请参阅:
Lifecycle.stop()
,Phased.getPhase()
isRunning
public final boolean isRunning()
从接口复制的说明:Lifecycle
Check whether this component is currently running.In the case of a container, this will return
true
only if all components that apply are currently running.
initArgumentResolvers
protected List<HandlerMethodArgumentResolver> initArgumentResolvers()
从类复制的说明:AbstractMethodMessageHandler
Return the list of argument resolvers to use. Invoked only if the resolvers have not already been set viaAbstractMethodMessageHandler.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>)
.
initReturnValueHandlers
protected List<? extends HandlerMethodReturnValueHandler> initReturnValueHandlers()
从类复制的说明:AbstractMethodMessageHandler
Return the list of return value handlers to use. Invoked only if the return value handlers have not already been set viaAbstractMethodMessageHandler.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>)
.
isHandler
protected boolean isHandler(Class<?> beanType)
从类复制的说明:AbstractMethodMessageHandler
Whether the given bean type should be introspected for messaging handling methods.
getMappingForMethod
protected SimpMessageMappingInfo getMappingForMethod(Method method, Class<?> handlerType)
从类复制的说明:AbstractMethodMessageHandler
Provide the mapping for a handler method.- 指定者:
getMappingForMethod
在类中AbstractMethodMessageHandler<SimpMessageMappingInfo>
- 参数:
method
- the method to provide a mapping forhandlerType
- the handler type, possibly a sub-type of the method's declaring class- 返回:
- the mapping, or
null
if the method is not mapped
resolveEmbeddedValuesInDestinations
protected String[] resolveEmbeddedValuesInDestinations(String[] destinations)
Resolve placeholder values in the given array of destinations.- 返回:
- a new array with updated destinations
- 从以下版本开始:
- 4.2
getDirectLookupDestinations
protected Set<String> getDirectLookupDestinations(SimpMessageMappingInfo mapping)
从类复制的说明:AbstractMethodMessageHandler
Return destinations contained in the mapping that are not patterns and are therefore suitable for direct lookups.
getDestination
protected String getDestination(Message<?> message)
getLookupDestination
protected String getLookupDestination(String destination)
从类复制的说明:AbstractMethodMessageHandler
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.If there are no matching prefixes, return
null
.If there are no destination prefixes, return the destination as is.
getMatchingMapping
protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message<?> message)
从类复制的说明:AbstractMethodMessageHandler
Check if a mapping matches the current message and return a possibly new mapping with conditions relevant to the current request.- 指定者:
getMatchingMapping
在类中AbstractMethodMessageHandler<SimpMessageMappingInfo>
- 参数:
mapping
- the mapping to get a match formessage
- the message being handled- 返回:
- the match or
null
if there is no match
getMappingComparator
protected Comparator<SimpMessageMappingInfo> getMappingComparator(Message<?> message)
从类复制的说明:AbstractMethodMessageHandler
Return a comparator for sorting matching mappings. The returned comparator should sort 'better' matches higher.- 指定者:
getMappingComparator
在类中AbstractMethodMessageHandler<SimpMessageMappingInfo>
- 参数:
message
- the current Message- 返回:
- the comparator, never
null
handleMatch
protected void handleMatch(SimpMessageMappingInfo mapping, HandlerMethod handlerMethod, String lookupDestination, Message<?> message)
createExceptionHandlerMethodResolverFor
protected AbstractExceptionHandlerMethodResolver createExceptionHandlerMethodResolverFor(Class<?> beanType)