问题描述
今天写了一个MD5加密加盐工具类,运用到实际业务代码中缺报错了,内容如下:
***************************
APPLICATION FAILED TO START
***************************
Description:
A ***ponent required a bean of type '***.wyh.util.SaltMD5Util' that could not be found.
Action:
Consider defining a bean of type '***.wyh.util.SaltMD5Util' in your configuration.
分析问题
根据错误日志不难发现,其实是因为组件没有被找到。因为这个工具类是我自己写的。
然后我就去检查代码,最终发现,我把这个工具类以注解的形式注入进来并使用
但是,这个工具类里面,我没有标明这个工具类是一个bean文件。所以项目扫描不到,就报了错。
解决问题
想要解决这种问题也十分的简单,目前想到两种方式
不注入bean的方式
我们可以换种思路,不注入bean文件,直接通过工具类下的方法直接调用
使用@***ponent
如果觉得直接调用工具类下的方法不舒服,非要使用bean的方式,name可以使用@***ponent注解
直接修饰类文件即可。
注意,不要引用错哦,用的是下面这个注解
import org.springframework.stereotype.***ponent;
再次重启解决问题。
扩展:@***ponent解释说明
@***ponent是spring中的一个注解,它的作用就是实现bean的注入。在Java的web开发中,提供3个@***ponent注解衍生注解(功能与@***ponent一样)分别是:
1、@Controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层。
2、@Service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理
3、@Repository(实现dao访问) 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
而@***ponent泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@***ponent来标注这个类。