У меня есть вопрос о Spring 3.2.3 @Transactional аннотация. Мой класс Service выглядит следующим образом:@Transactional не работает на уровне метода
@Service @Transactional
class InventoryDisclosureBO {
@Autowired InventoryDisclosureDAO inventoryDisclosureDAO;
private static final Logger log = LoggerFactory.getLogger(InventoryDisclosureBO.class);
public void processDisclosureData(InventoryDisclosureStatus data){
validate(data);
persist(data);
}
@Transactional(propagation = REQUIRES_NEW)
void persist(InventoryDisclosureStatus data) {
inventoryDisclosureDAO.setAllInvalid(data.getUnit());
inventoryDisclosureDAO.insert(data);
}
void validate(InventoryDisclosureStatus data) {
...
}
}
Все отлично работает, если я позвоню упорствовать() метод. Но если я прокомментирую @Transactional на уровне класса - транзакция не начинается. Может ли кто-нибудь сказать мне, почему Spring может игнорировать @Transactional только на уровне метола?
Спасибо, Евгений, это делает смысл! Если я ставил @Transactional только на processDisclosureData(), он работает отлично. – never
1) можете ли вы, пожалуйста, увеличить его бит в ответе? Persist() будет обходить транзакционный прокси, созданный Spring для InventoryDisclosureBO « –
2) idbo.persist (data); <- теперь он будет работать через прокси-сервер, это потому, что мы вызываем метод persist непосредственно извне класса? если это так, то как это имеет значение? –