@Autowired + @Qualifier працюватиме лише з весною DI, якщо ви хочете використовувати якийсь інший DI в майбутньому @Resource - це хороший варіант.
інша різниця, яку я вважав дуже важливою, це те, що @Qualifier не підтримує динамічну проводку бобів, так як @Qualifier не підтримує заповнювач, а @Resource робить це дуже добре.
Наприклад: якщо у вас є інтерфейс з декількома реалізаціями на кшталт цієї
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
за допомогою @Autowired & @Qualifier потрібно встановити конкретні дочірні програми, як-от
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
який не забезпечує заповнення місця, тоді як за допомогою @Resource можна поставити заповнювач і використовувати файл властивостей для введення конкретної дочірньої реалізації, наприклад
@Resource(name="${service.name}")
Parent object;
де service.name встановлено у файлі властивості як
#service.name=actualService
service.name=stubbedService
Сподіваюся, що хтось допомагає :)