Переопределить TransactionAttribute в дочернем классе - PullRequest
0 голосов
/ 13 апреля 2019

Как сказано в Spring docs, аннотации транзакций на уровне классов будут наследоваться дочерним классам.

Итак, как переопределить это поведение, например, у меня есть открытый метод в дочернем классе, и я не хочу этот методчтобы быть транзакционным.

Я попытался объявить метод дочернего класса с помощью

@ Transactional (распространение = Propagation.NOT_SUPPORTED)

, но все же он применяет конфигурацию транзакции из суперкласса.

@Service
@Transactional
public class EmployeeServiceImpl extends AbstractEmployeeServiceImpl {

   private EmployeeDao employeeDao;

   private AddressDao addressDao;

   @Autowired
   public EmployeeServiceImpl(EmployeeDao employeeDao, AddressDao 
   addressDao) {
        this.employeeDao = employeeDao;
        this.addressDao = addressDao;
    }

   // other service methods here ...
}

public interface OtherEmployService {

   public void someMethod();
}

@Service
public class FooServiceImpl extends EmployeeServiceImpl implements OtherEmployService {

        @Autowired
        public FooServiceImpl(EmployeeDao employeeDao, AddressDao addressDao) {
            super(employeeDao, addressDao);
        }

        @Override
        @Transactional(propagation = Propagation.NOT_SUPPORTED) // it does not work, and still creates new transaction
        public void someMethod() {
            TransactionAspectSupport.currentTransactionStatus().isNewTransaction(); // provides new transaction
        }
}

Итак, как я могу сделать некоторые методы () нетранзакционными?

...