Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

957
Visualizações
Al llamar a un método no transaccional de primavera desde un método transaccional en otra instancia, ¿se propaga la transacción?

Lo siento si esto se ha discutido antes, pero simplemente no pude encontrar la respuesta en todas las discusiones relacionadas sobre la anotación java @Transactional spring.

¿Qué sucede si llamamos a un método en otra instancia que no tiene una anotación @Transactional desde un método que tiene una anotación @Transactional? ¿Se suspenderá la transacción del método anotado @Transactaional? o se propagaría?

Encontré muchas discusiones sobre si la llamada al segundo método es de la misma instancia, pero no si el segundo método no transaccional está en otra instancia. ¡Gracias por tu ayuda!

Como en el ejemplo a continuación, ¿qué sucedería si se llama a methoda() en la clase B desde methoda() en la clase A? ¿Se propagaría la transacción de methoda o methodb no sería transaccional?

Código de ejemplo a continuación:

 public class A { @Autowired B b; @Transactional public void methoda(){ b.methodb(); } } @Component public class B { //this method is non transactional and is called from method A in class A public void methodb() { //do some db updates } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Si no hay anotaciones @Transactional en B para indicar lo contrario, entonces el método b usa la transacción establecida en la llamada a A.methoda. Esto es normal para Spring, tenemos componentes marcados como transaccionales que llaman a DAO que participan en la transacción actual sin estar marcados como transaccionales.

Si realmente desea suspender la transacción actual, puede agregar esta anotación al método b:

 @Transactional(propagation = Propagation.NOT_SUPPORTED)

Hay una advertencia sobre la suspensión de transacciones en el documento de Spring API:

NOTA: La suspensión real de transacciones no funcionará de manera inmediata en todos los administradores de transacciones. Esto en particular se aplica a JtaTransactionManager, que requiere que javax.transaction.TransactionManager esté disponible para él (que es específico del servidor en Java EE estándar).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda