Транзакция не фиксируется, когда совет начинает свое выполнение - PullRequest
0 голосов
/ 09 марта 2020

Я пишу аспект, который будет отправлять электронную почту при операциях сохранения / обновления / удаления со старыми и обновленными данными в качестве информации электронной почты. Я использую JpaRepository, предоставленный зависимостью spring-boot-starter-data-jpa. Я использую @Transactional для этих операций! Я хочу, чтобы аспект, который я написал для электронной почты, был вызван после совершения транзакции. Но это не работает таким образом. Аспект также выполняется внутри границы транзакции.

Ниже приведен аспект.

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class EmailAspect {

  private EmailSender emailSender;

  public EmailAspect( EmailSender emailSender) {
    this.emailSender = emailSender;
  }

  @Around("execution(* com.company.app.service.*Repository.save*(..))")
  public void sendEmail(ProceedingJoinPoint joinPoint) throws Throwable {
    Object myCustomObject= joinPoint.proceed();
    emailSender.send("Testing from app - Subject","Testing from app - Body", "test@test.com");
  }

}
...