我在我的java课程中遇到了一个奇怪的行为,并想知道这种行为的原因是什么,因为在线调查没有与我的情况类似的结果,我不得不问。
我使用Spring Framework的java程序有一个名为Validator
的类,它的定义如下:
@Component
public class Validator {
...
}
现在,在我的代码中的许多其他地方,我使用带有@Autowired
注释的类,如:
@Autowired
Validator validator;
当我尝试启动我的服务时,.war
失败并显示错误:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.company.common.validators.Validator]
但是,如果我在@Component
注释中添加名称,如下所示:
@Component("Validator")
public class Validator {
...
}
它完美无缺。
为什么我必须在@Component
注释中声明验证器类的名称,当它是相同的名称时?我注意到,如果我将我的班级名称更改为其他任何内容,例如:GeneralValidator
它可以正常工作,而无需在@Component
中说明姓名。