What does <tx:annotation-driven/> in Spring really do in the code level?

spring

Solution

It scans all beans in the application context and creates AOP interceptor for those which are annotated.

This is done via the `SpringTransactionAnnotationParser`, which is used by `TransactionInterceptor` - the aformentioned interceptor.

Then whenever these beans are accessed, this advice is triggered and a transaction is started before the target method is executed, and committed after the execution.

Problem

Does it set a flag in a bean ? Does it load "special" bean which then looks for `@Transactional` ?

Original source