@ControllerAdvice @ExceptionHandler方法中注入@Autowired为null的问题

最近代码中发现,使用@ControllerAdvice注解过的controller,@Autowired注入的bean直接引用为null,见代码中(3).
但是使用this的totring函数却发现是有值的——代码(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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容