transaction example ejemplo data spring-boot transactions

spring-boot - example - spring transaction propagation



@EnableTransactionManagement en Spring Boot (3)

De acuerdo con> https://spring.io/guides/gs/managing-transactions/

Spring Boot detectará spring-jdbc en el classpath y h2 y creará un DataSource y un JdbcTemplate automáticamente . Debido a que dicha infraestructura ya está disponible y no tiene una configuración dedicada, también se creará un DataSourceTransactionManager para usted : este es el componente que intercepta el método anotado @Transactional.

También puede usar el activador de arranque de arranque para enumerar sus beans creados en su contexto y lo encontrará

bean ":" transactionManager "

¿Se requiere @EnableTransactionManagement en Spring Boot? Hice algunas investigaciones. Algunas personas dicen que no lo necesita, ya que Spring Boot ya lo tiene habilitado, otros dicen que tiene que usarlo explícitamente. ¿Entonces, cómo es eso?


Poco viejo post pero las respuestas dadas anteriormente no son sencillas cuando lo estaba buscando.

@EnableTransactionManagement es opcional en Spring boot, siempre que spring-data * o spring-tx se encuentren en classpath. ¿Cómo funciona? Como a continuación:

Spring Boot agrega un spring-boot-autoconfigure.jar en la ruta de clase. Vaya al archivo spring.factories del META-INF y podrá ver la entrada org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration allí. Esto inicializa la configuración automática de la transacción para usted.

Tenga en cuenta que la clase tiene las siguientes líneas: (fragmento)

@Configuration @ConditionalOnClass({PlatformTransactionManager.class}) @AutoConfigureAfter({JtaAutoConfiguration.class, HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, Neo4jDataAutoConfiguration.class}) @EnableConfigurationProperties({TransactionProperties.class}) public class TransactionAutoConfiguration { .. }

Eche un vistazo a TransactionAutoConfiguration para ver si habilita el soporte de TransactionAutoConfiguration si PlatformTransactionManager está disponible en classpath. EnableTransactionManagementConfiguration también se configura allí.


Probablemente también estés usando Spring Data. Las llamadas a los repositorios de Spring Data están rodeadas de forma predeterminada por una transacción, incluso sin @EnableTransactionManagement. Si Spring Data encuentra una transacción existente, la transacción existente se reutilizará, de lo contrario se creará una nueva transacción.

Sin embargo, las anotaciones de @Transactional dentro de su propio código solo se evalúan cuando tiene activado @EnableTransactionManagement (o configurado la gestión de transacciones de otra manera).

Puede rastrear fácilmente el comportamiento de la transacción agregando la siguiente propiedad a su application.properties:

logging.level.org.springframework.transaction.interceptor=TRACE

(ver Mostrar una transacción de Spring en el registro )