@Before/@After/@AfterReturning/@AfterThrowing выполняются в фиксированной точке относительно целевого метода и не могут изменить, будет ли он выполняться. @Around полностью оборачивает вызов и должен явно вызывать proceed(), предоставляя ему полный контроль — он может пропустить вызов, вызвать его несколько раз или изменить аргументы/возвращаемое значение, как это реализовано @Transactional и @Cacheable.
@Before/@After/@AfterReturning/@AfterThrowing выполняются в фиксированной точке относительно целевого метода и не могут изменить, будет ли он выполняться.
В чем разница между советами `@Around` и другими типами советов ("@… · Sobeso