@ControllerAdvice @ExceptionHandler方法中注入@Autowired為null的問題

最近代碼中發(fā)現(xiàn),使用@ControllerAdvice注解過的controller,@Autowired注入的bean直接引用為null,見代碼中(3).
但是使用this的totring函數(shù)卻發(fā)現(xiàn)是有值的——代碼(1)部分,增加getter方法后,使用get方式也能獲取到(2)

原因未知,懷疑是@ControllerAdvice生成的代理訪問不了private對象,找到原因后更新

代碼

@ControllerAdvice
@ToString
@Data
public class HandleExceptionController {
    private static final Logger LOG = LoggerFactory.getLogger(HandleExceptionController.class);


    private VehicleBookConfig vehicleBookConfig;


    private AccountService accountService;


    @Autowired
    public HandleExceptionController(VehicleBookConfig vehicleBookConfig, AccountService accountService) {
        this.vehicleBookConfig = vehicleBookConfig;
        this.accountService = accountService;
    }

    @ExceptionHandler
    @ResponseBody
    public final String handleAllException(Exception ex) {
        LOG.error("exception", ex);

        LOG.error("HandleExceptionController{}", this); // (1)

        LOG.error("vehicleBookConfig{}", this.getVehicleBookConfig()); // (2)
        LOG.error("accountService{}", accountService); // (3)
        return  "default exception";
    }

}

結果


image.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容