@Autowired + @Qualifier ne fonctionnera qu'avec la DI de ressort, si vous souhaitez utiliser une autre DI à l'avenir @Resource est une bonne option.
une autre différence que j'ai trouvée très significative est que @Qualifier ne prend pas en charge le câblage de bean dynamique, car @Qualifier ne prend pas en charge l'espace réservé, tandis que @Resource le fait très bien.
Par exemple: si vous avez une interface avec plusieurs implémentations comme celle-ci
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
avec @Autowired et @Qualifier, vous devez définir une implémentation enfant spécifique comme
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
qui ne fournit pas d'espace réservé tandis qu'avec @Resource vous pouvez mettre un espace réservé et utiliser un fichier de propriétés pour injecter une implémentation enfant spécifique comme
@Resource(name="${service.name}")
Parent object;
où service.name est défini dans le fichier de propriétés comme
#service.name=actualService
service.name=stubbedService
J'espère que cela aide quelqu'un :)