در مورد قسمت اول سوال، استفاده از annotation برای تعریف dependency ها در فریم ورک های dependency injection معمولا بعنوان جایگزین برای روش XML است، برای مثال در Spring تمام تنظیمات و کارهایی که شما می توانید با روش XML انجام دهید را می توانید با annotation نیز انجام دهید اما در بعضی از فریم ورک های dependency injection مانند Google Guice فقط قابلیت تنظیم توسط annotation وجود دارد.
در مورد قسمت دوم سوال، استفاده از annotation بجای XML می تواند مدیریت کد را راحتتر کند چون metadata و کد در یک فایل بصورت مجتمع قرار دارند (البته بعضی اعتقاد دارند که استفاده از XML مدیریت کد را راحتتر می کند !).
در مورد قسمت سوم سوال، در اکثر فریم ورک های dependency injection شما می توانید از هر دو روش بصورت همزمان استفاده کنید.