zoukankan      html  css  js  c++  java
  • 【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因

    之前在spring boot服务中使用@ControllerAdvice做自定义异常拦截,完全没有问题!!!

    GitHub源码地址:

    但是现在在spring cloud中使用@ControllerAdvice做自定义异常拦截,却一直没有效果!

    package com.swapping.springcloud.ms.core.exception;
    
    import com.swapping.springcloud.ms.core.response.UniVerResponse;
    import org.springframework.web.bind.annotation.*;
    
    /**
     * controller加强器
     *
     */
    @ControllerAdvice
    public class MyControllerAdvice {
    
        /**
         * 系统异常 拦截器
         * @param ex
         * @return
         */
        @ResponseBody
        @ExceptionHandler(value = Exception.class)
        public UniVerResponse<String> errorHandler(Exception ex) {
            ex.printStackTrace();
            return MyErrorResultBean.create(ex);
        }
    
        /**
         * 自定义异常  拦截器
         * @param ex
         * @return
         */
        @ResponseBody
        @ExceptionHandler(value = MyException.class)
        public MyErrorResultBean myErrorHandler(MyException ex) {
            ex.printStackTrace();
            return MyErrorResultBean.create(ex);
        }
    }
    View Code

    原因:

    是因为在spring cloud项目中,启动类在一个微服务中,而@ControllerAdvice拦截器 放在另外一个公共的服务中,

    而启动类的@SpringBootApplication注解在服务启动时,只能扫描到 启动类所在包以及所有子包下的@Bean,并不能扫描到另一个公共服务中的注解,从而没有把@ControllerAdvice拦截器注入到spring中。

    解决方法:

    在启动类的@SpringBootApplication注解中说明,扫描的范围将@ControllerAdvice拦截器所在类包含进去,就可以扫描到了!!

    例如:

    @SpringBootApplication(scanBasePackages = "com.swapping")
    @EnableDiscoveryClient
    public class SpringcloudMsMemberApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringcloudMsMemberApplication.class, args);
        }
    }
    View Code
  • 相关阅读:
    关于APNs的错误认识纠正
    关于NSParagraphStyle
    关于离开UIScrollview所在界面时,UIScrollview的偏移量发生变化
    关于核心动画的一个提示
    关于PDF展示解决方案
    DQN 强化学习
    什么是 DQN
    面试时应该问面试官什么
    看demo1
    试着用教程跑cifar10数据
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9857379.html
Copyright © 2011-2022 走看看