Historically, we have several meant-to-be analogous method selection algorithms across the core framework: e.g. for request mappings, message mappings, JMS listeners, event listeners. Since those do not share a common algorithm implementation, they have different treatment of corner cases, in particular in case of a proxy vs target class scenario.
Most importantly, for common handler methods, we perform our expensive findAnnotation lookup twice since we're not reusing the initial result that triggered the inclusion in the candidate method set. Aside from consistency in the codebase, this part is primarily about startup performance for applications with many registered components of different types.
Along with #18153 and #18226, this should get addressed for 4.2.3 as well.
This is now refactored into org.springframework.core.MethodIntrospector, delegated to by all post-processors with analogous lookup purposes. Our two HandlerMethodSelector variants both delegate to that generalized class now and are marked deprecated themselves.