BeanFactoryUtils.getBeanNamesForType(ResolvableType)
change in behavior from Spring Boot 3.3.x (and earlier) top 3.4.x.
- AlphaRequest/BravoRequest/CharlieRequest extends Request
- CharlieSubRequest extends CharlieRequest
- AlphaProcessor implements Processor
- BravoProcessor implements Processor
- CharlieProcessor implements Processor
- CharlieSubProcessor implements Processor
- CharlieGenericProcessor implements Processor
- CharlieSubGenericProcessor implements Processor
String[] beanNames = context.getBeanNamesForType(ResolvableType.forClassWithGenerics(Processor.class, CharlieRequest.class));
Translation: Give me all Processors
implementations for CharlieRequest
type.
beanNames = [charlieGenericProcessor, charlieProcessor]
This is our expected behavior which our functionality is based on.
beanNames = [charlieGenericProcessor, charlieProcessor, charlieSubGenericProcessor]
It is now including CharlieSubGenericProcessor
. CharlieRequest
does not meet the extends CharlieSubRequest
criteria. For some reason, it is matching super types as well.
This is actual behavior after upgrading and causing unexpected processors to run.