Java 使用支持灵活方法签名的Spring创建自定义注释
在SpringMVC中,在控制器类中,允许使用Java 使用支持灵活方法签名的Spring创建自定义注释,java,spring,Java,Spring,在SpringMVC中,在控制器类中,允许使用@RequestMapping注释注释的方法具有灵活的方法签名 如果我想用我自己的自定义注释做类似的事情,有人能给我一些相同的指针吗 提前感谢。Spring MVC在这方面有很多特性,因此可以更容易地从其他地方开始。Spring4中引入的新消息传递抽象具有类似的特性 查看@MessageMapping,它允许您针对消息实例构建灵活的签名。例如,您可以插入消息的标题 public void foo(@Header("myHeader") int myH
@RequestMapping
注释注释的方法具有灵活的方法签名
如果我想用我自己的自定义注释
做类似的事情,有人能给我一些相同的指针吗
提前感谢。Spring MVC在这方面有很多特性,因此可以更容易地从其他地方开始。Spring4中引入的新消息传递抽象具有类似的特性
查看@MessageMapping
,它允许您针对消息
实例构建灵活的签名。例如,您可以插入消息的标题
public void foo(@Header("myHeader") int myHeader)
或者,您可以根据验证器验证有效负载
public void bar(@Payload @Validated Order order)
基础结构的核心位于InvocableHandlerMethod
中,它将根据传入的消息和可能提供的其他参数(请参见public final Object invoke),调用您在给定bean实例上提供的java.lang.reflect.Method
(消息、对象…提供的参数)
要创建该实例,您需要提供一组HandlerMethodArgumentResolver
。每个HandlerMethodArgumentResolver
负责处理一个方法参数。简而言之,这基本上将为您提供一个MethodParameter
实例(即,对要处理的方法的参数的引用,如上一示例中带注释的顺序
)你要知道你是否支持它,当你支持的时候,处理这个参数以便注入正确的值
例如,在SimpAnnotationMethodMessageHandler
(查看initArgumentResolvers
)中创建了一组默认解析程序。这将向您显示默认情况下可以在其中插入的参数类型。通过扩展该列表(或提供自定义实例)您可以增加用户可以在方法签名中使用的内容
在Spring4.1中,我们依靠这个基础设施来提供JMS侦听器注释的端点,这些端点可能也有一个灵活的签名。因此,您可能想看看另一个例子