Java 在服务中引发异常时,哪种做法更好?
我正在开发一个Spring Boot CRUD RESTful API,并试图定义做某些事情的最佳方式,例如: 这是我的id端点服务列表用户:Java 在服务中引发异常时,哪种做法更好?,java,spring,api,rest,Java,Spring,Api,Rest,我正在开发一个Spring Boot CRUD RESTful API,并试图定义做某些事情的最佳方式,例如: 这是我的id端点服务列表用户: @Service public class DetailUserService { @Autowired UserRepository repository; public Optional<User> listUser(Long id) { Optional<User> user =
@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);
}
}
}
这两种方法都有效,但我如何知道哪一种更好?使用
java-8
对于更少的代码和更可读的代码来说总是更好的选择。您可以使用下面提到的样式作为第二个选项。 使用
Optional.orelsetrow()
方法代表了isPresent()-get()
对的另一种优雅的替代方法
你可以在这里找到更多
在第一个代码段中,您将查询存储库两次。这使得这两种情况更糟。对于这两个代码段,返回404notfound也是一个很好的设计
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public User listUser(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}
@Service
public class DetailUserService {
@Autowired
UserRepository repository;
public User listUser(Long id) {
return repository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));
}
}