This is a demonstration of the problem I describe here.
There is a solution! When using @EnableAsync with generic bean qualification, you need to enable CGLib proxying. This means that the type information is retained when the class is transformed into an Async proxy in the back end.
@EnableAsync(proxyTargetClass=true)