Java 当注释在类上注释时,如何使注释在每个方法上工作,如@ResponseBody

Java 当注释在类上注释时,如何使注释在每个方法上工作,如@ResponseBody,java,annotations,Java,Annotations,我想写一个类似于@ResponseBody的注释,在类中使用它,这样它就可以在每个方法上工作。所以我想知道如何实现。类级注释如何应用于所有方法,并不特定于@ResponseBody注释,它适用于所有此类注释,例如@Transactional。当编译带有注释的代码时,编译器运行相应的注释处理器(该处理器对该特定注释感兴趣)。注释处理器通常使用反射来检查正在编译的元素。处理器可能只是在最终编译之前对代码段/方法运行检查、修改它们或生成新代码。这可能还包括修改该类的所有方法。请参阅在类级别实现自定义注

我想写一个类似于
@ResponseBody
的注释,在类中使用它,这样它就可以在每个方法上工作。所以我想知道如何实现。

类级注释如何应用于所有方法,并不特定于
@ResponseBody
注释,它适用于所有此类注释,例如
@Transactional
。当编译带有注释的代码时,编译器运行相应的注释处理器(该处理器对该特定注释感兴趣)。注释处理器通常使用反射来检查正在编译的元素。处理器可能只是在最终编译之前对代码段/方法运行检查、修改它们或生成新代码。这可能还包括修改该类的所有方法。请参阅在类级别实现自定义注释的示例

来到@ResponseBody:

声明从spring版本4.0开始,注释也可以添加到类型级别,在这种情况下,注释是继承的,不需要添加到方法级别

@ResponseBody的工作原理:

如果使用
@ResponseBody
注释方法(或封装类),spring将尝试转换方法的返回值并将其自动写入http响应

根据您的配置,spring有一个在后台注册的HttpMessageConverters列表。HttpMessageConverter的职责是根据预定义的mime类型将方法返回值转换为HTTP响应体


每次发出的请求命中
@ResponseBody
注释时,spring都会遍历所有已注册的HttpMessageConverters,寻找符合给定mime类型和类的第一个,然后将其用于实际转换。

请包含一个代码示例。要实现此功能,首先,你们需要一个注释处理器来读取注释本身,你们有吗?今天下午我想错了,现在我明白了。处理器得到了注释,我过去认为spring做了一些事情使类注释在方法上工作。谢谢,我的意思是当我在课堂上注释时,它可以在每种方法上工作,我想知道@ResponseBody如何实现它,这是我的问题。@ResponseBody如何实现它你说的我很清楚,但我想写一个像ResponseBody这样的注释,我希望它能在我对类进行注释时对每个方法都有效,所以我想知道ResponseBody如何实现它。你可以在类级别上搜索自定义注释。有关示例,请参见。如果我能回答你的问题,请接受这个答案。老实说,这个答案不能解决我的问题,但我会给你投票。非常感谢。