gpt4 book ai didi

java - 当在类上进行注释时,如何使注释在每个方法上都起作用,例如@ResponseBody

转载 作者:行者123 更新时间:2023-12-05 04:06:06 27 4
gpt4 key购买 nike

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

最佳答案

类级别注释如何应用于所有方法,并不特定于 @ResponseBody 注释,它适用于所有此类注释,例如 @Transactional。当编译带有注解的代码时,编译器会运行相应的注解处理器(它对该特定注解表现出兴趣)。注释处理器通常使用反射来检查正在编译的元素。处理器可以简单地对代码片段/方法运行检查,修改它们,或者在最终编译之前生成新代码。这可能还包括修改该类的所有方法。引用http://mkyong.com/java/java-custom-annotations-example有关在类级别实现自定义注释的示例。

来到@ResponseBody:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html声明从 spring 版本 4.0 开始,@ResponseBody 注释也可以添加到类型级别,在这种情况下,它是继承的,不需要添加到方法级别。

@ResponseBody 的工作原理:

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

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

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

关于java - 当在类上进行注释时,如何使注释在每个方法上都起作用,例如@ResponseBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50231117/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com