我在下面的场景中几乎没有怀疑。
有一个接口和两个实现类:
接口:
int x;
;
x = yourTable.YourField;
if (x >= 1 && x <= 15)
{
return YourEnum::1to15;
}
else if (x >= 16 && x <= 20)
{
return YourEnum::16to20;
}
// other possible ranges
else
{
throw YourEnum::Unknown;
}
第一个实施类:
interface ServiceInt
{
public void save();
}
第二个实施类:
Public class ServiceIntImpOne implements ServiceInt
{
public void save()
{
// I am first service implementation
}
}
调用实现类的save方法的主类:
Public class ServiceIntImpTwo implements ServiceInt
{
public void save()
{
// I am Second service implementation
}
}
我的问题:
Public class controller
{
@Autowired ServiceInt;
public void save()
{
ServiceInt.save()
}
}
- 它会调用服务类实现的保存方法吗?ServiceInt.save()
类的保存方法实现?答案 0 :(得分:3)
ServiceInt.save() - 保存服务类实现的方法 它会调用吗?
如果您有两个相同类型的bean(通过注释或通过xml定义的bean),当您自动装配该bean时它将失败(抛出异常),因为Spring不知道要注入的bean。
caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [ServiceInt] is defined:
我们如何使用ServiceIntImpTwo的save方法实现 类?
如果您在xml文件中定义了bean,则可以使用id属性
<bean id="beanTwo" class="ServiceIntImpTwo" />
然后您可以使用限定符注释
进行自动装配@Autowired
@Qualifier("beanTwo")
ServiceInt myServiceTwo;
如果您使用的是注释。
@Component
Class ServiceIntImpTwo impl...{}
然后你可以自动装载
@Autowired
@Qualifier("serviceIntImpTwo ")
ServiceInt myServiceTwo;
自动装配是如何工作的?
您可以在互联网上阅读。
http://memorynotfound.com/handling-multiple-autowire-dependencies-with-spring-qualifier/ https://www.mkyong.com/spring/spring-autowiring-qualifier-example/ https://www.tutorialspoint.com/spring/spring_qualifier_annotation.htm
答案 1 :(得分:0)
如果你有两个实现到一个接口,你需要提供一个弹簧提示使用哪个:
@Qaulifier
注释@Profile
并选择有效的个人资料。