spring annotationとioc原則の衝突


最近はspring annotationを勉強していますが、昨日の夜に突然一つの問題を思い出しました.annotationのような零xmlの方式を使うと、柔軟性がなくなりますか?例を挙げると、次のようになります.
一つのインターフェース:

public interface IStudent{
   //to do something
}
二つの業務規則によって、このインターフェースは二つの実現があるかもしれません.

public class StudentImpl implements IStudent{
   //implements interface
}
public class StudentImplExt implements IStudent{
   //implements interface
}
方式1:以前のようにxmlで構成しています.最初の業務規則が必要なとき、xmlをこのように書いてもいいです.<bean_id=「student」class=「comp.xx. StudentImpl」/>第二の業務規則が必要なときは、xml:bean_id=「student」class=「comple.xxxxxStudent.Student.edl.」異なるテンプレートを設定すればいいです.とても便利です.
方式二:annotationを使ったら、controllerに必ずこのようなコードがあります.

@Autowired(required=true) @Qualifier("studentImpl")
IStudent iStudent
このように考えてみると、ハードコードの方式とあまり変わりません.IStudent iStudent=new StudentImpl()は、第一の方式の需要を満たすためには、クラスの注入コードを修正しなくてはいけませんか?
annotationを勉強したばかりですが、まだ完全には理解できないかもしれません.どうやってannotationを使って柔軟な効果を達成できるか、あるいはannotationは以前のxmlに比べて本当に柔軟ではないですか?