Я пишу аспект, который будет отправлять электронную почту при операциях сохранения / обновления / удаления со старыми и обновленными данными в качестве информации электронной почты. Я использую 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");
}
}