org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'dd

430 阅读1分钟
项目版本:
    springboot:3.2.4
    java:17
    mybatis-plus:3.5.4

springboot3.x 项目整合 mybatis-plus 后,启动项目报错:

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'ddlApplicationRunner' is expected to be of type 'org.springframework.boot.Runner' but was actually of type 'org.springframework.beans.factory.support.NullBean'
at org.springframework.beans.factory.support.AbstractBeanFactory.adaptBeanInstance(AbstractBeanFactory.java:410)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:391)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:778)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:341)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)

跑去官方 github 上看到有人提到这个问题的原因:

image.png

image.png

我用到的是 3.5.4 版本也出现了这个问题,看到上面提到升级到 mybatisplus3.5.5 就不会出现这个问题了,试了一下还是没有效果。

最终解决方案,自己写个配置类,手动添加 DdlApplicationRunner 配置:

@Configuration
public class DdlApplicationRunnerConfig {
    @Bean
    public DdlApplicationRunner ddlApplicationRunner(@Autowired(required = false) List ddlList) {
        return new DdlApplicationRunner(ddlList);
    }
}

启动程序就能运行了。