Какая практика лучше при создании исключения в службе? - PullRequest
0 голосов
/ 19 июня 2020

Я работаю над Spring Boot CRUD RESTful API, и я пытаюсь определить лучший способ делать определенные вещи, например:

Это мой Список пользователей по его идентификатору конечная служба:

@Service
public class DetailUserService {

    @Autowired
    UserRepository repository;

    public Optional<User> listUser(Long id) {

        Optional<User> user = repository.findById(id);
        if (!user.isPresent()) {
            throw new UserNotFoundException(id);
        } else {
            return repository.findById(id);
        }
    }
}

И это еще один способ записать это:

@Service
public class DetailUserService {

    @Autowired
    UserRepository repository;

    public User listUser(Long id) {
        return repository.findById(id)
                .orElseThrow(() -> new UserNotFoundException(id));
    }
}

Оба способа работают, но как мне узнать, что лучше?

1 Ответ

0 голосов
/ 19 июня 2020

Использование java-8 всегда лучше для меньшего количества кода и более читаемого кода. Вы можете использовать приведенный ниже стиль, как вы упомянули, в качестве второго варианта. Использование метода Optional.orElseThrow() представляет собой еще одну элегантную альтернативу паре isPresent()-get()

Вы можете узнать больше здесь https://dzone.com/articles/using-optional-correctly-is-not-optional

@Service
public class DetailUserService {

    @Autowired
    UserRepository repository;

    public User listUser(Long id) {
        return repository.findById(id)
                .orElseThrow(() -> new UserNotFoundException(id));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...