Marking a non-public method @Async
or @Transactional
is misleading because, up to version 5, Spring does not recognize
non-public methods, and so makes no provision for their proper invocation. Nor does Spring make provision for the methods invoked by the method it
called. Since Spring 6, protected and package-private methods can be handled, but the issue remains for private methods.
Therefore, marking a private method, for instance, @Transactional gives a false sense of security, and can lead to incorrect assumptions and
potential bugs.