我在我的 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
.