解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found

解决:Parameter 0 of constructor in com.mise.smart.entity.HrmNoticeEntity required a bean of type 'java.lang.Integer' that could not be found.

  • 一·问题描述:
    • 1.做excel导出功能时,启动springboot项目失败,报错如下所示。
  • 二·问题原因:
    • 1.原因产生背景:
      • (1)实体类利用spring注解注入bean时,在springboot项目启动期间,spring会自动调用该类的构造方法进行注入IOC容器
      • (2)如果没有进行特殊配置,就会默认调用无参构造方法进行注入容器。
      • (3)如果实体类没有无参构造方法,spring就会去调用实体类的有参构造方法,如果此时IOC里面还没有对应的参数实例,那么就会报错,提示没有提供必要的构造参数。
    • 2.根本原因:实体类缺少无参构造方法
    • 3.直接原因:
      • (1)lombok插件的@Data注解,理解有偏差,实体类上面已经加了全参构造注解。
  • 三·解决办法:
      • 1.在实体类上面再加上lombok插件的无参构造注解
  • 四·测试结果:启动成功!

一·问题描述:

1.做excel导出功能时,启动springboot项目失败,报错如下所示。

解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found_第1张图片
解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found_第2张图片

二·问题原因:

1.原因产生背景:

(1)实体类利用spring注解注入bean时,在springboot项目启动期间,spring会自动调用该类的构造方法进行注入IOC容器

(2)如果没有进行特殊配置,就会默认调用无参构造方法进行注入容器。

(3)如果实体类没有无参构造方法,spring就会去调用实体类的有参构造方法,如果此时IOC里面还没有对应的参数实例,那么就会报错,提示没有提供必要的构造参数。

2.根本原因:实体类缺少无参构造方法

3.直接原因:

(1)lombok插件的@Data注解,理解有偏差,实体类上面已经加了全参构造注解。

lombok插件的@Data注解作用:
(1)在你没有显示声明有参构造方法的时候,它会自动给类加上必要的无参构造函数;
(2)如果你主动加上了有参构造方法,包括利用lombok插件的全参构造注解生成有参构造方法,@Data注解就不会再自动生成无参构造方法。
(3)其他作用如下图所示。

解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found_第3张图片

三·解决办法:

1.在实体类上面再加上lombok插件的无参构造注解

解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found_第4张图片

四·测试结果:启动成功!

解决:Parameter 0 of constructor in XXX required a bean of type ‘XXX‘ that could not be found_第5张图片

你可能感兴趣的:(解决,java,spring,spring,boot,lombok,constructor)