If AbstractAdvisingBeanPostProcessor.isEligible(…) encounters a proxy instance it only checks the proxy target class and its methods for eligibility for proxying.
If the target class doesn't implement all methods the proxy exposes (because some generic interceptor on the proxy executes the methods exposed on a proxy interface), the processor might consider a bean ineligible although it actually is (due to methods only exposed on the interface and not the target classs).
I think ….isEligible(…) should also check for Advised and check the exposed interfaces as well.
Affects: 3.2.8, 4.0.3
DATACMNS-498 Remove assumption guard in RepositoryFactorySupportUnitTests ("is depended on by")
DATACMNS-489 Add support for Future as return type for repository methods ("is depended on by")
It turns out that this is a side effect of AbstractAdvisingBeanPostProcessor's ability to add its Advisor to an existing proxy (i.e. to an Advised object encountered as bean instance): This doesn't work when the Advisor is meant to apply to introductions. We're only doing that for actual target class matches behind an existing proxy now, while testing against the exposed bean instance's class (which does catch introductions) in the regular case.