Spring Boot Interceptor不显示@ControllerAdvice ErrorHandler?

发布于 2025-02-05 02:45:44 字数 4473 浏览 2 评论 0原文

启动:IM试图用interceptor实现in项目,但是仅在终端中显示的错误处理,这很好,但我还需要在postman中的restapi中显示,它显示为空。


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


public class WebInterceptor implements HandlerInterceptor {
    
    private Logger logger = LoggerFactory.getLogger(WebInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception    {
        logger.error("WebInterceptor preHandle is now logged");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        logger.error("WebInterceptor posthandle is now logged");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        logger.error("WebInterceptor afterCompletion is now logged");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    
    


    
    
    
    

}



import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer{
    


    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new WebInterceptor()).addPathPatterns("/cart/**").order(1);
        registry.addInterceptor(new WebInterceptor()).addPathPatterns("/product/**").order(2);
    }
    
    
    
    

}



import com.kongapigateway.KongAPIgateway.ModelException.DATE_FORMAT_ERROR;
import com.kongapigateway.KongAPIgateway.ModelException.ProductExecption;
import com.kongapigateway.KongAPIgateway.ModelException.ProductIDnotFound;
import com.kongapigateway.KongAPIgateway.ModelException.ProductValueNotNull;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class WEbAspectExceptionConfig {
    
     private Logger logger = LoggerFactory.getLogger(WEbAspectExceptionConfig.class);

        @ExceptionHandler(ProductValueNotNull.class)
        @ResponseStatus
        public void handle(ProductValueNotNull e) {
            logger.error(e.getMessage());
        }
        
        @ExceptionHandler(DATE_FORMAT_ERROR.class)
        @ResponseStatus
        public void handle2(DATE_FORMAT_ERROR e) {
               logger.error(e.getMessage());
        }
        
        @ExceptionHandler(ProductExecption.class)
        @ResponseStatus
        public void handle2(ProductExecption e) {
               logger.error(e.getMessage());
        }
        
        @ExceptionHandler(ProductIDnotFound.class)
        @ResponseStatus
        public void handle2(ProductIDnotFound e) {
               logger.error(e.getMessage());
        }
        
        

}


终端输出: 这是错误处理消息:请输入所有字段

kongapigateway    | 2022-06-07 11:21:33.149  INFO 1 --- [nio-8095-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
kongapigateway    | 2022-06-07 11:21:33.161 ERROR 1 --- [nio-8095-exec-1] c.k.K.Interceptor.WebInterceptor         : WebInterceptor preHandle is now logged
kongapigateway    | 2022-06-07 11:21:33.277 ERROR 1 --- [nio-8095-exec-1] c.k.K.AOP.WEbAspectExceptionConfig       : Please input all field
kongapigateway    | 2022-06-07 11:21:33.277 ERROR 1 --- [nio-8095-exec-1] c.k.K.Interceptor.WebInterceptor         : WebInterceptor afterCompletion is now logged

postman api错误处理程序为空

此处显示

Implemetation: Im trying to implementin project with Interceptor but the Error handling in showing only in Terminal which is good but i need also to show in restapi in postman and its showing empty.


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;


public class WebInterceptor implements HandlerInterceptor {
    
    private Logger logger = LoggerFactory.getLogger(WebInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception    {
        logger.error("WebInterceptor preHandle is now logged");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        logger.error("WebInterceptor posthandle is now logged");
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        logger.error("WebInterceptor afterCompletion is now logged");
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
    
    


    
    
    
    

}



import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer{
    


    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new WebInterceptor()).addPathPatterns("/cart/**").order(1);
        registry.addInterceptor(new WebInterceptor()).addPathPatterns("/product/**").order(2);
    }
    
    
    
    

}



import com.kongapigateway.KongAPIgateway.ModelException.DATE_FORMAT_ERROR;
import com.kongapigateway.KongAPIgateway.ModelException.ProductExecption;
import com.kongapigateway.KongAPIgateway.ModelException.ProductIDnotFound;
import com.kongapigateway.KongAPIgateway.ModelException.ProductValueNotNull;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class WEbAspectExceptionConfig {
    
     private Logger logger = LoggerFactory.getLogger(WEbAspectExceptionConfig.class);

        @ExceptionHandler(ProductValueNotNull.class)
        @ResponseStatus
        public void handle(ProductValueNotNull e) {
            logger.error(e.getMessage());
        }
        
        @ExceptionHandler(DATE_FORMAT_ERROR.class)
        @ResponseStatus
        public void handle2(DATE_FORMAT_ERROR e) {
               logger.error(e.getMessage());
        }
        
        @ExceptionHandler(ProductExecption.class)
        @ResponseStatus
        public void handle2(ProductExecption e) {
               logger.error(e.getMessage());
        }
        
        @ExceptionHandler(ProductIDnotFound.class)
        @ResponseStatus
        public void handle2(ProductIDnotFound e) {
               logger.error(e.getMessage());
        }
        
        

}


Terminal Output:
This is the error handling message: Please input all field

kongapigateway    | 2022-06-07 11:21:33.149  INFO 1 --- [nio-8095-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
kongapigateway    | 2022-06-07 11:21:33.161 ERROR 1 --- [nio-8095-exec-1] c.k.K.Interceptor.WebInterceptor         : WebInterceptor preHandle is now logged
kongapigateway    | 2022-06-07 11:21:33.277 ERROR 1 --- [nio-8095-exec-1] c.k.K.AOP.WEbAspectExceptionConfig       : Please input all field
kongapigateway    | 2022-06-07 11:21:33.277 ERROR 1 --- [nio-8095-exec-1] c.k.K.Interceptor.WebInterceptor         : WebInterceptor afterCompletion is now logged

Postman api error handler is Empty

Shown here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稍尽春風 2025-02-12 02:45:45

无视此文章问题。
我使用spring aop @around进行自定义异常。

谢谢。

Kindly disregard this Post Question.
I used Spring AOP @Around for customize exception.

Thank you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文