【发布时间】:2020-06-19 14:36:06
【问题描述】:
我正在开发一个 Spring Boot CRUD RESTful API,我正在尝试定义做某些事情的最佳方式,例如:
这是我的 按 id 列出用户端点服务:
@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));
}
}
两种方式都可以,但我怎么知道哪个更好?
【问题讨论】:
-
您在第一个 sn-p 中查询了存储库两次。这使得两者中的情况更糟。对于返回 404 Not found 的两个 sn-ps 也是不错的设计