A method annotated with Spring’s @Async
or @Transactional
annotations will not work as expected if invoked directly from
within its class.
This is because Spring generates a proxy class with wrapper code to manage the method’s asynchronicity (@Async
) or to handle the
transaction (@Transactional
). However, when called using this
, the proxy instance is bypassed, and the method is invoked
directly without the required wrapper code.