Affects: 5.2.11.RELEASE, 5.3.6
Issue: If the bean is wrapped by aop (for example if it was marked with @Transactional somewhere) into a proxy AND signleton instance was precreated (injected into some @Autowired field) already then ListableBeanFactory.getBeansOfType will not find it.
What i am trying to achieve: I have a bunch of services implementations which all extend CrudService abstract generic class and I want find all implementations automatically.
Possible fix - change ResolvableType.isInstance(Object obj) implementation from: return (obj != null && isAssignableFrom(obj.getClass())); to: return (obj != null && isAssignableFrom(obj.getClass())) || (checkSomehowIsItAProxy(obj) && isInstance(getWrappedObjectSomehow(obj)));
Comment From: mettyoung
Following, this is still an issue ?
Comment From: snicoll
You should not use getBeansOfType
in the first place. It's not available on the BeanFactory
and that's what you should be using for that (not the ApplicationContext
).
If BeanFactory#getBeanProvider
does not work, please share a small sample we can run ourselves that reproduces that behavior.
Comment From: spring-projects-issues
If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.
Comment From: spring-projects-issues
Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.