Used in bare form, [@Transactional] specifies that an interface, class, or method must be transactional. Default transaction semantics are read/write, PROPAGATION_REQUIRED, ISOLATION_DEFAULT, TIMEOUT_DEFAULT, with rollback on a RuntimeException, but not Exception.Other rollback signals (i.e., Exception) can be added to the annotation as well.
He walks through the actual configuration, showing the XML configuration of transactions, and then he shows how AOP can be used to ensure the transactional notation is applied.
His summary:
I hope that I’ve gotten you at least a little bit eager to try using the transaction Annotations in your Spring-based applications. My feeling is that as more and more code starts running in a Java 5+ environment, and Java 5+ dependencies become acceptable, using Annotations for transaction demarcation will be the prefered mechanism. They’re certainly a great way to reduce boilerplate XML, and move the information about what needs to be wrapped transactionally much closer to the actual code being wrapped, without any significant negatives.