是否有可能有一个Spring Bean工具2接口,并能够使用任一接口自动装配该bean?
我有以下内容:
两个接口
public interface ServiceA {}
public interface ServiceB {}
两个控制器使用构造函数自动装配来注入不同的服务
@RestController
public class ControllerA {
public ControllerA(ServiceA service) {}
}
@RestController
public class ControllerB {
public ControllerB(ServiceB service) {}
}
一个实现这两种服务的类
@Service
public class ServiceImpl implements ServiceA, ServiceB { }
我得到一个NoSuchBeanDefinitionException
由以下原因引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖[ServiceB]找到[ServiceB]类型的限定bean:期望至少有1个bean可以作为此依赖项的autowire候选者 . 依赖注释:{}
我正在使用Spring Boot 1.4.0版
2 回答
是的,但是重要的是,创建ServiceImpl类型的服务bean而不是作为服务接口之一:
Spring在 declared bean类型上使用反射来找出它实现的接口,而不是bean.getClass() .
希望有所帮助
您可以使用@Qualifier注释 . 它可以在注入点与@Autowired或@Inject一起应用,以指定要注入的bean .
资料来源:Spring in Action第4版,