Spring支持各种注解,库/模块/类/模式处理注解逻辑。spring为@Controller、@RestController实现注释行为的地方...示例:要添加新的自定义注释,我们添加at-sign (@),然后使用Java反射处理内容。那么,在Spring Framework中,他们如何做到这一点,以及当他们升级版本以进行注释时,Spring如何修改逻辑?
@PostConstruct和@PreDestroy被处理到类InitDestroyAnnotationBeanPostProcessor中,所以哪个类处理@RestController。我想要了解@RestController的spring实现是如何实现的,因为我想添加一个新的注释,其中包括@RestController和我的额外逻辑。
发布于 2019-01-07 00:39:19
好的,下面是@Controller / @RestController如何从源代码层面上工作的高级概述。希望这能给你一些方向。详情请参考相关source codes。
RequestMappingHandlerMapping bean初始化(即afterPropertiesSet()调用)时,它将找出所有带有@Controller/@RestController注释的bean。使用反射从这些MappingRegistryMappingRegistry.RequestMappingHandlerAdapter#handleInternal()中。接收到一个@Controller/@RestController,然后调用HttpServletRequest,从匹配的RequestMappingHandlerMapping#lookupHandlerMethod()调用中找出哪个HandlerMethod可以处理这个HttpServletRequest,最后使用反射来实际调用bean上的方法
https://stackoverflow.com/questions/53952691
复制相似问题