相关疑难解决方法(0)

Spring @ExceptionHandler和多线程

我有以下控制器建议:

@ControllerAdvice
public class ExceptionHandlerAdvice {

    @ExceptionHandler(NotCachedException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ModelAndView handleNotCachedException(NotCachedException ex) {
        LOGGER.warn("NotCachedException: ", ex);
        return generateModelViewError(ex.getMessage());
    }

}
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下工作得很好但是当从使用@Async注释的方法抛出NotCachedException时,异常处理不正确.

@RequestMapping(path = "", method = RequestMethod.PUT)
@Async
public ResponseEntity<String> store(@Valid @RequestBody FeedbackRequest request, String clientSource) {
    cachingService.storeFeedback(request, ClientSource.from(clientSource));
    return new ResponseEntity<>(OK);
}
Run Code Online (Sandbox Code Playgroud)

这是Executor的配置:

@SpringBootApplication
@EnableAsync
public class Application {

private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
        SettingsConfig settings = context.getBean(SettingsConfig.class);
        LOGGER.info("{} ({}) started", settings.getArtifact(), settings.getVersion());
        createCachingIndex(cachingService);
    }

    @Bean(name …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading

6
推荐指数
1
解决办法
1570
查看次数

标签 统计

java ×1

multithreading ×1

spring ×1