我正在研究一个spring boot CRUD RESTful API,我正在尝试定义做某些事情的最佳方式,例如:
这是我的列表用户(按其idendpoint服务):
@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));
}
}
两种方法都有效,但我怎么知道哪种更好呢?
使用Java-8
总是更好的选择,可以减少代码,提高代码的可读性。
您可以使用下面的tyle of作为第二种选择。 使用optional.orelseThrow()
方法代表了isPresent()-get()
对的另一个优雅的替代
您可以在https://dzone.com/articles/using-optional-correction-is-not-optional找到更多信息
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public User listUser(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}