Marking a non-public method @Async
or @Transactional
is misleading because 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.
Therefore marking a private method, for instance, @Transactional can only result in a runtime error or exception if the method is annotated as
@Transactional.