O @Autowired + @Qualifier funcionará apenas com o DI de mola, se você quiser usar outro DI no futuro. @Resource é uma boa opção.
outra diferença que achei muito significativa é que o @Qualifier não suporta a fiação dinâmica do bean, pois o @Qualifier não suporta espaço reservado, enquanto o @Resource o faz muito bem.
Por exemplo: se você tiver uma interface com várias implementações como esta
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
com @Autowired e @Qualifier, você precisa definir uma implementação filho específica, como
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
que não fornece espaço reservado enquanto estiver com @Resource, você pode colocar espaço reservado e usar o arquivo de propriedades para injetar uma implementação filho específica, como
@Resource(name="${service.name}")
Parent object;
em que service.name está definido no arquivo de propriedades como
#service.name=actualService
service.name=stubbedService
Espero que ajude alguém :)