我想将应用程序从Spring Boot 2.2.8更新到2.3.1,当我在更新后运行应用程序时,我的globalExceptionHandler将不再正常工作。我的情况是在请求中有无效的JSON-Body时处理错误。
应用程序
package com.schaerer.coffeelink.remote;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.kafka.annotation.EnableKafka;
@Slf4j
@SpringBootApplication
@EnableKafka
public class Application {
public static void main(final String[] args) { //NOSONAR
SpringApplication.run(Application.class, args);
log.info("Started application. Swagger available at http://localhost:8080/swagger-ui.html");
}
}
package com.schaerer.coffeelink.remote.boundary.v1;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.schaerer.coffeelink.remote.boundary.v1.dto.*;
import com.schaerer.coffeelink.remote.controller.v1.ActionController;
import com.schaerer.coffeelink.remote.controller.v1.BidiCommandController;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@Slf4j
@RestController
@Validated
@RequestMapping(value = "v1/remote", produces = MediaType.APPLICATION_JSON_VALUE)
@Tag(name = "remote-bidi-command")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class BidiCommandResource {
private final BidiCommandController bidiCommandController;
private final ActionController actionController;
private final ObjectMapper mapper;
@ExceptionHandler({IllegalArgumentException.class})
public ResponseEntity<Object> handleException(final IllegalArgumentException illegalArgumentException) {
return new ResponseEntity<>(illegalArgumentException.getMessage(), HttpStatus.BAD_REQUEST);
}
@PostMapping
@Operation(summary = "apply bidi command 2.0")
public BidiCommandReturnDto applyBidiCommand(@Parameter(name = "applyBidiCommand")
@Validated({ActionDto.CreateValidation.class, BidiCommandDto.CreateValidation.class})
@RequestBody final BidiCommandDto bidiCommandDto) {
return bidiCommandController.applyBidiCommand(bidiCommandDto);
}
}
package com.schaerer.coffeelink.remote.boundary.v1;
import com.fasterxml.jackson.databind.JsonMappingException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(value = {JsonMappingException.class})
public ResponseEntity<Object> handleJacksonError(final JsonMappingException ex, final WebRequest request) {
log.error("Cannot parse request. {}", request.getDescription(true), ex);
return handleExceptionInternal(ex, ex.getMessage(), new HttpHeaders(), HttpStatus.BAD_REQUEST, null);
}
}
有什么想法吗?
当删除ResponseEntityExceptionHandler扩展时,我找到了一个解决方案。以下是我的解决方案:
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {HttpMessageNotReadableException.class})
public ResponseEntity<Object> handleJacksonError(final JsonMappingException ex, final WebRequest request) {
log.error("Cannot parse request. {}", request.getDescription(true), ex);
return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
}
}
本文向大家介绍springboot2.3 整合mybatis-plus 高级功能及用法详解,包括了springboot2.3 整合mybatis-plus 高级功能及用法详解的使用技巧和注意事项,需要的朋友参考一下 —学习并使用mybatis-plus的一些高级功能的用法例如: AR模式、 乐观锁 、逻辑删除 、自动填充、数据保护等功能 为了方便演示,咱们还是新建一个全新的项目 引入mp依赖 ym
我正在开发一个带有ActionBars的应用程序,它支持姜饼和其他功能。所以基本上我在使用支持库并扩展 行动B活动 对于我所有的活动。除了 onSupportNavigateUp() 方法。它只是不被调用在留档中所述。 每当用户选择从操作栏在应用程序的活动层次结构中向上导航时,就会调用此方法。 这很容易,但我一直不明白为什么它不能像预期的那样工作,谷歌也帮不上忙。这是虫子吗?还是我错过了什么?
运行playstore Build Apk时,未调用Marshmallow Runtime Permissions onRequestPermissionsResult,但正常调试Apk时运行良好。谁来帮帮我。。谢谢 OnRequestPermissionResult方法
我很难让正常工作。无论我怎么努力,我都不能让它被称为。 我的应用程序的体系结构如下所示:我的主活动包含一个片段,其中包含一个ViewPager,而ViewPager又有四个子片段实例。目前,我正在(成功地)用填充活动中的初始选项菜单,但我希望添加一些对应于每个活动子片段的额外选项。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这个问题上两天了。 更新--我已经搞清楚了现在的问题是什么
CustomDialog 下面是http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample
我使用: null 我正在使用zuul和负载平衡rest模板从另一个微服务调用一个微服务: 请求到达下游服务,但未在ZullFilter中设置头(我使用了不同的头): 我还创建了一个过滤器: 我错过了什么?为什么不能调用筛选器?在我的案件中是否应该引用?
我试图发送一个意图,从一个活动中的创建启动一个意图服务。但是,IntentService的onHandleIntent永远不会被接收。我尝试过用意图过滤器改变清单,但似乎没有任何效果。没有抛出异常,但是根本没有调用IntentService。 这是onCreate 这是IntentService类的创建者和OnHandleContent,我知道它不会被调用,因为logcat从不显示“检索到的意图”
问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C