Spring: ¿Por qué autowire la interfaz y no la clase implementada?
Ejemplo
interface IA
{
public void someFunction();
}
@Resource(name="b")
class B implements IA
{
public void someFunction()
{
//busy code block
}
public void someBfunc()
{
//doing b things
}
}
@Resource(name="c")
class C implements IA
{
public void someFunction()
{
//busy code block
}
public void someCfunc()
{
//doing C things
}
}
class MyRunner
{
@Autowire
@Qualifier("b")
IA worker;
worker.someFunction();
}
¿Puede alguien explicarme esto?
¿Cómo sabe la primavera qué tipo polimórfico usar?Lo necesito@Qualifier
o@Resource
?¿Por qué autowire la interfaz y no la clase implementada?