在我的 Spring Boot 应用程序中,我有一个用于生成和使用 JSON 请求的 post 请求的控制器,并且我已使用 HttpMediaTypeNotAcceptableException 为该控制器定义了 @ExceptionHandler 来捕获 HttpMediaTypeNotAcceptableException(406 状态代码)异常。
现在,每当我使用错误的 ACCEPT 标头(例如 application/pdf)调用 post 请求时,定义的异常都不会被调用。
我不想定义 ControllerAdvice,因为我想为此控制器抛出特定错误。
代码:
@RestController
@RequestMapping("/school")
public class SchoolCotroller {
@Autowired
private SchoolService schoolService;
@PostMapping(produces = "Application/Json", consumes = "Application/Json")
@ResponseStatus(HttpStatus.CREATED)
public School postData(@Valid @RequestBody School school) {
return schoolService.save(school);
}
@ExceptionHandler(HttpMediaTypeNotAcceptableException.class)
String handleMediaTypeNotAcceptable(
final HttpMediaTypeNotAcceptableException exception,
final NativeWebRequest request) {
return "acceptable MIME type:" + MediaType.APPLICATION_JSON_VALUE;
}
}
Run Code Online (Sandbox Code Playgroud)
卷曲:
curl --location --request POST 'http://localhost:8080/school' \
--header 'Accept: application/pdf' \
--header …Run Code Online (Sandbox Code Playgroud) 我正在使用 spring-Kafka 作为消费者应用程序运行一个 spring 应用程序。在 Kafka 监听器中,我们使用 SpEL 表达式设置了自动启动。我们在运行时更改此值以使此表达式为 false。当我们更改属性时,KafkaListener 将停止消费更多消息。
问题:这是停止轮询进一步记录的正确方法还是我们应该使用 kafkaListenerEndpointRegistry 并停止服务?这两者有什么区别?
另一个问题是,如果我有另一个应用程序使用同一消费者组,所有分区都会重新分配给该应用程序吗?