Configuring an aspect in Spring as:
@Configuration
@EnableAspectJAutoProxy
@EnableTransactionManagement
public class TestConfiguration {
@Bean
public TransactionAspect transactionAspect(){
return new TransactionAspect();
}
And TransactionAspect
is:
@Aspect
class TransactionAspect extends TransactionSynchronizationAdapter
{
private final Logger logger = LoggerFactory.getLogger(TransactionAspect.class);
@Before("@annotation(org.springframework.transaction.annotation.Transactional)")
public void registerTransactionSyncrhonization()
{
TransactionSynchronizationManager.registerSynchronization(this);
}
@Override
public void afterCommit()
{
logger.info("After commit!");
}
}
If I annotate an implementation method with @Transactional
, TransactionAspect
is working as expected. But if the annotation is on interface it doesn't work. Is it the normal behavior or I'm doing something wrong?