Sobes.tech
Back to questions
Junior — Middle
62

Какие шаги необходимо выполнить, чтобы аннотация @Transactional начала правильно функционировать в вашем приложении?

Companies where asked
ВТБВТБ

Answer from AI

sobes.tech AI

Чтобы аннотация @Transactional работала корректно в приложении на Java (обычно с использованием Spring Framework), необходимо выполнить следующие шаги:

  1. Подключить зависимость Spring Transaction Management в вашем проекте (например, через Maven или Gradle).

  2. Включить поддержку транзакций в конфигурации Spring:

    • Если используется Java-конфигурация, добавить аннотацию @EnableTransactionManagement в класс конфигурации.
    • Если XML-конфигурация — включить <tx:annotation-driven />.
  3. Настроить менеджер транзакций (например, PlatformTransactionManager), связанный с вашим источником данных (DataSource).

  4. Использовать аннотацию @Transactional на классах или методах, где требуется управление транзакциями.

  5. Убедиться, что вызовы методов с @Transactional происходят через прокси Spring, то есть не внутри того же класса напрямую, иначе аннотация не сработает.

Пример Java-конфигурации:

@Configuration
@EnableTransactionManagement
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        // настройка DataSource
    }

    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

После этого методы, помеченные @Transactional, будут выполняться в рамках транзакций, которые автоматически начнутся и завершатся (commit/rollback) в зависимости от результата выполнения.