Hej, jako że @Transactional nie działa na metodach wołanych z tego samego beana, to czy takie przykład będzie działał tranzakcyjnie?
interface BaseService {
void doWork();
}
class BaseServiceImpl implements BaseService {
DataFetcher dataFetcher;
public BaseServiceImpl(DataFetcher dataFetcher) {
this.dataFetcher = dataFetcher;
}
@Override
public void doWork() {
dataFetcher.fetch();
}
}
interface DataFetcher {
List<String> fetch();
}
class DataFetcherImpl implements DataFetcher {
public List<String> fetchItems() {
return fetch();
}
@Override
@Transactional
public List<String> fetch() {
//fetchowanie danych
}
}
Teoretycznie fetch()
jest wołany z tego samego beana czyli DataFetcher
, no ale fetchItems()
które woła tranzakcyjne fetch()
jest wołane już z innego beana BaseService
.
Czy w takim wypadku jest to wywołanie tranzakcyjne i @Transactional dziala poprawnie?