Java 使用支持灵活方法签名的Spring创建自定义注释

Java 使用支持灵活方法签名的Spring创建自定义注释,java,spring,Java,Spring,在SpringMVC中,在控制器类中,允许使用@RequestMapping注释注释的方法具有灵活的方法签名 如果我想用我自己的自定义注释做类似的事情,有人能给我一些相同的指针吗 提前感谢。Spring MVC在这方面有很多特性,因此可以更容易地从其他地方开始。Spring4中引入的新消息传递抽象具有类似的特性 查看@MessageMapping,它允许您针对消息实例构建灵活的签名。例如,您可以插入消息的标题 public void foo(@Header("myHeader") int myH

在SpringMVC中,在控制器类中,允许使用
@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侦听器注释的端点,这些端点可能也有一个灵活的签名。因此,您可能想看看另一个例子