当前位置: 首页 > 知识库问答 >
问题:

Java注释如何在Spring框架中工作[重复]

邢高澹
2023-03-14

当我使用Spring Framework时,我使用Java注释将类标记为控制器,使用@Request estMap()等方法。我不知道哪个类阅读这些注释以及使用了什么技术。我在想Java反射。对吗?

共有3个答案

羊时铭
2023-03-14

简而言之,Spring有一个称为BeanPostProcessor的概念,它负责(隐式或显式)处理注释或Springbean的任何工作/修改。

Spring框架支持许多注释,有些仅用于Web,有些用于缓存或调度,Spring本身由许多在不同领域提供帮助的框架组成。

当加载应用程序上下文时,这些bean后处理器也会被spring识别(从技术上讲,它们与其他spring bean一样,但因为它们实现了org.springframework.beans.factory.config.BeanPostProcessor,尽管spring也将它们放在应用程序上下文中,但它们的处理方式不同)。

因此,为每个bean调用这些BPP,并允许修改bean。

通常,每个BPP执行以下操作之一:

>

修改Bean、设置其依赖项等。例如,Autowired就是这样工作的。

仅因为bean包含注释而部署其他代码,例如,如果您放置了预定的注释,spring将创建一个计时器,该计时器将在不同的线程中定期调用标记有此注释的方法。

您可以在spring文档或这个问题中阅读更多关于这方面的内容

怀洛华
2023-03-14

是的,也不是,Spring当然使用反射来使用注释中的数据,但真正神奇的是HandlerMapping和HandlerAdapter的作用,它们提供url和控制器的映射(HandlerMapping),并根据控制器方法调整特定的servlet请求和响应。在partucular中,如果您使用@EnableWebMvc或,您会在spring boot应用程序或lagacy spring应用程序中自动注册RequestMappingHandlerMapping和RequestMappingHandlerAdapter。这些是通过反射给你带来精灵魔力的豆子。即使我建议使用函数式编程中声明的endpoint,它也可以在Spring WebFlux中运行

太叔马鲁
2023-03-14

是的,Spring使用Java反射来评估您在注释中提供的信息并进行适当的配置。在@Request estMapSpring MVC和Spring WebFlux的情况下,都支持此注释(请参阅此处)。

摘录:

Spring MVC和Spring WebFlux都通过各自模块和包结构中的RequestMappingHandlerMapping和RequestMappingHandlerAdapter支持此注释。。。

 类似资料:
  • 我有这样一个代码: 存储库 服务 我想知道为什么我可以调用“interface EquipmentRepository”方法。EquipmentRepository是一个接口,对吗?

  • 所以我知道通过这个注释: 此方法处理对URL/Orders表示的资源发出的GET HTTP请求。 此方法调用返回列表的DAO对象。 确保结果将由HTTP消息转换器(而不是MVC视图)写入HTTP响应。 也可以阅读Spring官方文档:http://docs.Spring.io/Spring/docs/current/javadoc-api/org/springframework/web/bind/

  • 问题内容: 我是Spring的新手,现在有很多关于Spring Framework的信息。我有两个非常具体的问题: 设置编号1: 注释一般是什么? 批注如何专门用于Spring框架? 注释可以在Spring Framework之外使用还是它们特定于Framework? 设置编号2: Spring Framework的哪些模块在工业中广泛使用? 我认为这是Spring MVC,但是为什么它是最常用的

  • 我有一个仅有一个简单rest控制器的Spring-Boot应用程序。在这个控制器上,我添加了jmx注释@ManagedResource和@ManagedOperation,它工作得很好。它在JMX中被正确地公开。这个应用程序依赖于一个“全局共享”库来共享我们所有模块的许多基本功能。 但是如果我向这个库中的一个类添加相同的注释,它就会被忽略!在您询问之前,是的,库是用最新的更改导入的。日志中没有错误

  • 我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact