我有以下服务等级:
@Service
public class CitiesServiceImpl implements CitiesService {
@Autowired
private CitiesRepository citiesRepository;
@Override
public City getCityById(Integer cityId) {
return citiesRepository.findById(cityId)
.orElseThrow(ResourceNotFoundException::new);
}
}
它在我的控制器中使用:
@RestController
@RequestMapping("/cities")
public class CitiesController {
@Autowired
private CitiesService citiesService;
@GetMapping("/{cityId}")
public City readCity(@PathVariable Integer cityId) {
return citiesService.getCityById(cityId);
}
@ExceptionHandler(ResourceNotFoundException.class)
String handleResourceNotFound(Exception e) {
return e.getMessage();
}
}
因此,当readCity使用不存在的 调用 时cityID,ResourceNotFoundException将抛出 ,然后由handleResourceNotFound异常处理程序处理。
但是,处理ResouceNotFoundException完之后,响应中的状态码还是202,即OK。似乎在运行时没有使用@ResponseStatus注释。ResourceNotFoundException这可以通过将 @ResponseStatus(value=HttpStatus.NOT_FOUND) 添加到方法来解决handleResourceNotFound,但是这样的代码是重复的,因为@ResponseStatus注释已经在ResourceNotFoundException.
问题:如何利用ResponseStatus注释ResourceNotFoundException而不是添加重复代码?
繁星coding
相关分类