Назад к задачам
Junior — Senior
6

Асинхронное изменение данных пользователя

Компании, где спрашивали:

Brainway LTD
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Провести ревью класса UserServiceImpl, выявив возможные проблемы в реализации асинхронного обновления и последующего сохранения данных о пользователе.

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;
    private final NotificationService notificationService;

    @Override
    @Transactional
    public void updateUser(UUID id) {
        User user = userRepository.findById(id);
        user.setName(RandomStringUtils.random(6));
        userRepository.save(user);
        notifyAboutUpdatedUser(id);
    }

    @Override
    @Async
    public void notifyAboutUpdatedUser(UUID id) {
        User user = userRepository.findById(id);
        NotificationInfo notificationInfo = notificationService.notify(user);
        user.setNotifyInfoMessage(notificationInfo.getMessage());
        userRepository.save(user);
    }
}