Почему это. Метод все еще работает транзакционно в Spring BootJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему это. Метод все еще работает транзакционно в Spring Boot

Сообщение Anonymous »

Почему это. methoda () и this.methodb () , по -видимому, присоединяется к транзакции MethodD? Обычно это. Method () вызовы обходятся прокси-механизм Spring Spring, и @Transactional будет игнорироваться для таких вызовов.

Код: Выделить всё

public interface AopProxy {
default T self() {
return (T)AopContext.currentProxy();
}
}
< /code>
@Slf4j
@Service
public class TestTransactionalService implements AopProxy {
@Autowired
private DataSource dataSource;

@Transactional(rollbackFor = Exception.class)
public void methodA() {
System.out.println("methodA");
logTransactionInfo();
}

@Transactional(rollbackFor = Exception.class)
public void methodB() {
System.out.println("methodB");
logTransactionInfo();
}

@Transactional(rollbackFor = Exception.class)
public void methodC() {
self().methodA();
self().methodB();
System.out.println("methodC");
logTransactionInfo();
}

@Transactional(rollbackFor = Exception.class)
public void methodD() {
System.out.println(this.getClass().getName());
this.methodA();
this.methodB();
System.out.println("methodD");
logTransactionInfo();
}

public void logTransactionInfo() {
boolean isActive = TransactionSynchronizationManager.isActualTransactionActive();
System.out.println("Is transaction active? " + isActive);

String transactionName = TransactionSynchronizationManager.getCurrentTransactionName();
System.out.println("Transaction name: " + transactionName);

Integer isolationLevel = TransactionSynchronizationManager.getCurrentTransactionIsolationLevel();
System.out.println("Isolation level: " + isolationLevel);

java.sql.Connection connection = DataSourceUtils.getConnection(dataSource);
System.out.println("Connection hashCode: " + connection.hashCode());
}
}
< /code>
@RunWith(SpringRunner.class)
@SpringBootTest
@EnableAspectJAutoProxy(exposeProxy = true, proxyTargetClass = true)
@Slf4j
public class OrderManagementTest {
@Autowired
private TestTransactionalService testTransactionalService;

@Before
public void setUp() {

}

@Test
public void testTransactionalC() {
testTransactionalService.methodC();
}

@Test
public void testNoTransactionalD() {
testTransactionalService.methodD();
}

}
< /code>
testnotransactionald метод вывод с тем же соединением: < /p>
methodA
Is transaction active? true
Transaction name: org.o2.order.server.TestTransactionalService.methodD
Isolation level: null
Connection hashCode: 1232075168
methodB
Is transaction active? true
Transaction name: org.o2.order.server.TestTransactionalService.methodD
Isolation level: null
Connection hashCode: 1232075168
methodD
Is transaction active? true
Transaction name: org.o2.order.server.TestTransactionalService.methodD
Isolation level: null
Connection hashCode: 1232075168
Я знаю, что метод testtransactionalc будет работать в той же транзакции с aopcontext.currentproxy () , но почему тестовый метод>

Подробнее здесь: https://stackoverflow.com/questions/797 ... pring-boot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему это. Метод все еще работает транзакционно в Spring Boot
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить два session.write_pandas транзакционно на снежинках?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить два session.write_pandas транзакционно на снежинках?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot не удалось выполнить цель org.springframework.boot: Spring-Boot-Maven-Plugin: 3.3.0: запустить
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Spring Boot не удалось выполнить цель org.springframework.boot: Spring-Boot-Maven-Plugin: 3.3.0: запустить
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»