Это код, о котором идет речь.
@Aspect
@EnableAspectJAutoProxy
public class TransactionAspect extends TransactionSynchronizationAdapter {
public TransactionMonitor transactionMonitor;
String message;
@Before("execution(@org.springframework.transaction.annotation.Transactional * *.*(..)) && args(message,..))")
public void registerTransactionSynchronization(String message) {
TransactionSynchronizationManager.registerSynchronization(this);
this.message = message;
}
public void setTransactionMonitor(TransactionMonitor transactionMonitor) {
this.transactionMonitor = transactionMonitor;
}
Я создал этот компонент Aspect в своем файле конфигурации spring.
Изначально у меня это было в блоке @Before @Before("@annotation(org.springframework.transaction.annotation.Transactional)")
Это сработало. Места, где у меня есть аннотация Transactional, будут называть это Pointcut. Однако мне также нужны переменные из метода, который я использую для этого аспекта. Вот где приходит args(message). Я пробовал несколько разных способов получить это сообщение (которое является строкой), но безрезультатно.
Кто-нибудь знает, как я могу создать этот Pointcut, чтобы он попадал в аннотацию Transactional, а также извлекать переменную из метода, который я аннотировал с помощью Transactional? Спасибо любезно.