Uso de @Transactional en Spring

Motivo a este thread en la lista de discusión Spring Perú escribo este pequeño post sobre configuración de transacciones declarativas en Spring con @Transactional.

La configuración básica es la siguiente, en el archivo de configuración del Application Context de Spring:

<?xml version="1.0" encoding="UTF-8"?>
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">







Un ejemplo de clase de la capa @Service marcada como @Transactional

package net.lshimokawa.corespring.service.impl;
@Service
@Transactional
public class UsuarioServiceImpl implements UsuarioService {
}

La configuración "context:annotation-config" y "context:component-scan" activan la configuración automática de beans con estereotipos. Por ejemplo @Service registra el bean de tipo UsuarioService automáticamente en el ApplicationContext. De la misma manera la configuración activa la anotación @Transactional que registra el bean para que sea transaccional por AOP. Esta configuración utiliza el bean transactionManager que debe ser configurado en el Application Context.