@Autowired + @Qualifier hanya akan berfungsi dengan spring DI, jika Anda ingin menggunakan beberapa DI lain di masa depan @Resource adalah pilihan yang baik.
Perbedaan lain yang saya temukan sangat signifikan adalah @Qualifier tidak mendukung pengkabelan kacang dinamis, karena @Qualifier tidak mendukung placeholder, sementara @Resource melakukannya dengan sangat baik.
Misalnya: jika Anda memiliki antarmuka dengan banyak implementasi seperti ini
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
dengan @Autowired & @Qualifier Anda perlu mengatur implementasi anak tertentu seperti
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
yang tidak menyediakan placeholder sementara dengan @Resource Anda dapat menempatkan placeholder dan menggunakan file properti untuk menyuntikkan implementasi anak seperti
@Resource(name="${service.name}")
Parent object;
di mana service.name diatur dalam file properti sebagai
#service.name=actualService
service.name=stubbedService
Semoga itu bisa membantu seseorang :)