报错“Field pet in XXX.HelloController required a bean of type ‘XXX.Pet‘ that could not be found.“(代码片段

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错“Field pet in XXX.HelloController required a bean of type ‘XXX.Pet‘ that could not be found.“(代码片段相关的知识,希望对你有一定的参考价值。

异常

2021-06-22 14:10:56.860 ERROR 17884 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field pet in com.demo.springboot.controller.HelloController required a bean of type 'com.demo.springboot.bean.Pet' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)

The following candidates were found but could not be injected:
	- Bean method 'pet' in 'MyConfig' not loaded because @ConditionalOnBean (names: user01; SearchStrategy: all) did not find any beans named user01


Action:

Consider revisiting the entries above or defining a bean of type 'com.demo.springboot.bean.Pet' in your configuration.

原因

我们来分析打印出来的错误日志:

我们查看HelloController类,在该类中注入了Pet类型的Bean组件,但是报错没有注入成功

那么我们点击左侧的箭头图标,去到注入这个组件的方法处,发现就是MyConfig类的pet()方法处,在这里使用@Bean注解注入了Pet组件。

但是我们使用了@ConditionalOnBean(name = "user01")注解在@Bean注解的上面,意思就是说必须在容器中存在一个名为"user01"的组件,才注入Pet组件,否则不进行注入。

解决

取消掉这个@ConditionalOnBean(name = "user01")注解,或者注入一个名为"user01"的组件。

但这么解决后还是报这个错,是什么原因呢?注意要被@ConditionalOnBean注解条件使用的bean组件应该在该注解的上面被声明,而不是在下面。

 

以上是关于报错“Field pet in XXX.HelloController required a bean of type ‘XXX.Pet‘ that could not be found.“(代码片段的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow报错 或者 keras报错 以及tf.keras报错: OOM 显存不足

idea @Autowired 报错

windows10 composer 安装报错?

Tomcat问题。运行报错

eclipse里arraylisthashmap报错

sql 2014 安装报错