У меня есть интерфейс MongoRepository:
public interface MyRepository extends MongoRepository<MyDocument,String> {}
и аннотированный класс @Component
, который служит потоком, используя @Scheduled
:
@Component
@Scope("prototype")
@EnableAsync
public class MyThread {
@Autowired
private MyRepository myRepository;
@Scheduled(fixedRate = 5000)
@Async
public void saveCurrentTime()
{
myRepository.save(someTimeHere);
}
}
Мой вопрос:
Является ли этот @Scheduled
метод потокобезопасным? Основная идея здесь заключается в создании различных MyThread
bean-компонентов (@Scope("prototype")
), которые сохранят текущее время в No SQL. Но что произойдет, если 2 из этих «потоков» вызовут метод myRepository.save()
одновременно? Должен ли я обрабатывать синхронизацию самостоятельно или она уже обработана этой аннотацией?