spring 启动没有控制器的应用程序异常处理程序

spring boot application exception handler which don't have controller

我的 Spring 启动应用程序是没有控制器的独立应用程序。我正在从 spring 引导应用程序的主要方法调用服务层。

我尝试在我的 class 中使用 @ExceptionHandler @ControllerAdvice 注释,如下所示。但控制永远不会出现在我的异常处理程序方法

package com.test.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

    @ControllerAdvice
    public class MyExceptionHandler {
    
        @ExceptionHandler(NullPointerException.class)
        public void handleNullpointerExcetion() {
            System.out.println("Handling Null pointer exception");
        }
    }

我也尝试了包名,我需要在@ControllerAdvice 中扫描它,但它不起作用

@ControllerAdvice("com.test.utility")
    public class MyExceptionHandler {
    
        @ExceptionHandler(NullPointerException.class)
        public void handleNullpointerExcetion() {
            System.out.println("Handling Null pointer exception");
        }
    }

如果我们没有我们用@RestContoller 或@Controller

注释的控制器class,我们是否无法在集中处理异常?

我不这么认为。

ControllerAdvice 仅在控制器 return 异常时使用, 它是一个层,存在于控制器 returns 中的端点之后和实际 returning 响应之前,用于插入和全局处理异常,并且仅对控制器是全局的。 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html

因为你没有控制器,我想 ControllerAdvice 不会帮助你。

如果你想要一个集中的错误处理机制,你必须围绕你的“Main”函数实现类似于控制器建议的东西,你可以对它有统一的异常处理响应。