1. Un enfoque @Transactional fue la ausencia de @Transactional llamada a un método, que dará lugar rol fallo transaccional. La situación es más probable que ocurra.
¿Por qué habría que pasar? De hecho, esto se debe a la utilización de Spring AOP
agentes causadas, porque sólo cuando el método de transacción se llama código fuera de la clase actual, se hará Spring
para gestionar el objeto proxy generado.
2. El método de la anotación de transacciones no pública. @Transactional se producirá un error.
La razón: cuando el agente es estar en primavera AOP, interceptor transacción para interceptar antes y después del método de destino, DynamicAdvisedInterceptor
método de intercepción recibirá la información de configuración de transacción de la anotación de transacciones,
TransactionInterceptor
(interceptor transacción) para objetivo de intercepción antes y después de realizar el método,
DynamicAdvisedInterceptor
(CglibAopProxy clases internas) el método de intercepción o
JdkDynamicAopProxy
método invoke llamar indirectamente
AbstractFallbackTransactionAttributeSource
el
computeTransactionAttribute
método indirectamente llamando
AbstractFallbackTransactionAttributeSource
el
computeTransactionAttribute
método, que obtendrá información de configuración de anotación de transacciones transaccional. Lo hará método de transacción primer encuentro de clasificación de la verificación no es público, no la propiedad pública no se adquiere la información de configuración @Transactional.
TransactionDefinition.PROPAGATION_SUPPORTS
: Si existe la transacción actual, que se añade a la transacción, y si no hay ninguna transacción, lugares manera no transaccionales continúan funcionando.
TransactionDefinition.PROPAGATION_NOT_SUPPORTED
: El ejecutarse en forma no transaccional, si existe la transacción actual, puesto que la transacción actual en espera.
TransactionDefinition.PROPAGATION_NEVER
: El ejecutarse en forma no transaccional, si existe la transacción actual, se produce una excepción
4. También hay un caso en el que:
Un método anotado por la transacción, B también se ha anotado método de transacción en una clase.
@ transaccional
A public void () {
tratar{
esta b();
} Catch (Exception e) {
logger.error ();
}
}
Sin embargo, en la aplicación del método B se da, pero es la captura anormal Un vivo, entonces la transacción se producirá un error.