问题描述

今天写了一个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来标注这个类。