No pude encontrar una respuesta definitiva a esto en los documentos, y aunque parece haber una respuesta lógica, no se puede estar seguro. El escenario es esto - usted tiene una definición de transacciones basado en XML, como:Definiciones de transacciones basadas en anotaciones y basadas en xml precedencia
<tx:advice id="txAdvice" transaction-manager="jpaTransactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
que aconseja a todos los métodos de servicio. Pero luego tiene @Transactional
en una clase/método concreto, donde desea anular el atributo propagation
.
Está claro que @Transactional
en el método de nivel anula la misma a la altura de la clase, pero lo hace anulan la <tx:advice>
(y, de hecho, la <aop:pointcut>
)?
espero dos interceptores no se crearán en la misma clase, (y lo que pasa a ser primera se iniciará la transacción)
curiosamente, se comporta como esperábamos. Ahora voy a hacer un poco de excavación para ver qué más hay para TxAdviceBeanDefinitionParser .. – Bozho
Me pregunto si el proxy generado por 'TxAdviceBeanDefinitionParser' está revisando el bean objetivo para las anotaciones cuando se invoca. – skaffman
resulta que creo que dos TransactionInterceptors que se crean son verdaderos. Formulé la pregunta (incluidos mis nuevos hallazgos) en el foro de primavera y lo mantendré actualizado con el resultado. – Bozho