为什么 class Validator 的 Autowire 不工作但为 GeneralValidator 工作?
Why Autowire of class Validator not working but working for GeneralValidator?
我在 java class 中遇到了一个奇怪的行为,我想了解造成这种行为的原因,因为在线调查没有得到与我的情况类似的任何结果,我不得不问。
我的java程序使用Spring框架有一个名为Validator
的class,它的定义如下:
@Component
public class Validator {
...
}
现在,在我的代码的许多其他地方,我使用带有 @Autowired
注释的 class,例如:
@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
注释中声明验证器 class 的名称,当它是相同的名称时?我注意到,如果我将我的 class 名称更改为其他任何名称,例如:GeneralValidator
它可以正常工作,而无需在 @Component
.
中说明名称
我在 java class 中遇到了一个奇怪的行为,我想了解造成这种行为的原因,因为在线调查没有得到与我的情况类似的任何结果,我不得不问。
我的java程序使用Spring框架有一个名为Validator
的class,它的定义如下:
@Component
public class Validator {
...
}
现在,在我的代码的许多其他地方,我使用带有 @Autowired
注释的 class,例如:
@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
注释中声明验证器 class 的名称,当它是相同的名称时?我注意到,如果我将我的 class 名称更改为其他任何名称,例如:GeneralValidator
它可以正常工作,而无需在 @Component
.