Async not working on controller's abstract super class method

There are couple of rules for @Async, you are doing the self-invocation which won't work here

  • it must be applied to public methods only
  • self-invocation – calling the async method from within the same class – won’t work

The reasons are simple – the method needs to be public so that it can be proxied. And self-invocation doesn’t work because it bypasses the proxy and calls the underlying method directly.