解决SpringBoot启动失败:A component required a bean of type ‘xxxxxxx‘ that could not be found.

Posted 小花皮猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决SpringBoot启动失败:A component required a bean of type ‘xxxxxxx‘ that could not be found.相关的知识,希望对你有一定的参考价值。

问题描述

今天写了一个MD5加密加盐工具类,运用到实际业务代码中缺报错了,内容如下:


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

Description:

A component required a bean of type 'com.wyh.util.SaltMD5Util' that could not be found.


Action:

Consider defining a bean of type 'com.wyh.util.SaltMD5Util' in your configuration.

分析问题

根据错误日志不难发现,其实是因为组件没有被找到。因为这个工具类是我自己写的。

然后我就去检查代码,最终发现,我把这个工具类以注解的形式注入进来并使用

但是,这个工具类里面,我没有标明这个工具类是一个bean文件。所以项目扫描不到,就报了错。

解决问题

想要解决这种问题也十分的简单,目前想到两种方式

不注入bean的方式

我们可以换种思路,不注入bean文件,直接通过工具类下的方法直接调用

使用@Component

如果觉得直接调用工具类下的方法不舒服,非要使用bean的方式,name可以使用@Component注解

直接修饰类文件即可。

注意,不要引用错哦,用的是下面这个注解
import org.springframework.stereotype.Component;

再次重启解决问题。

扩展:@Component解释说明

@Component是spring中的一个注解,它的作用就是实现bean的注入。在Java的web开发中,提供3个@Component注解衍生注解(功能与@component一样)分别是:

1、@Controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层。

2、@Service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理

3、@Repository(实现dao访问) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件

而@Component泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

以上是关于解决SpringBoot启动失败:A component required a bean of type ‘xxxxxxx‘ that could not be found.的主要内容,如果未能解决你的问题,请参考以下文章

<已解决>namenode格式化失败:java.lang.IllegalArgumentException: URI has an authority component

记一次启动 SpringBoot 失败的问题

解决springboot启动失败问题:Unable to start embedded container;

想springboot启动完成后执行某个方法

自主开发的、带有 @Component 的组件在Spring Boot 项目中不生效的解决方法

springboot @Autowired mapper 爆红解决方案,超详细,罗列各种情况