@Autowired + @Qualifier funktioniert nur mit Spring DI, wenn Sie in Zukunft einen anderen DI verwenden möchten. @Resource ist eine gute Option.
Ein weiterer Unterschied, den ich als sehr bedeutsam empfand, ist, dass @Qualifier keine dynamische Bean-Verkabelung unterstützt, da @Qualifier keine Platzhalter unterstützt, während @Resource dies sehr gut tut.
Zum Beispiel: Wenn Sie eine Schnittstelle mit mehreren Implementierungen wie dieser haben
interface parent {
}
@Service("actualService")
class ActualService implements parent{
}
@Service("stubbedService")
class SubbedService implements parent{
}
Mit @Autowired & @Qualifier müssen Sie eine bestimmte untergeordnete Implementierung wie festlegen
@Autowired
@Qualifier("actualService") or
@Qualifier("stubbedService")
Parent object;
Wenn Sie mit @Resource keinen Platzhalter bereitstellen, können Sie einen Platzhalter einfügen und eine Eigenschaftendatei verwenden, um eine bestimmte untergeordnete Implementierung wie zu injizieren
@Resource(name="${service.name}")
Parent object;
Dabei wird service.name in der Eigenschaftendatei als festgelegt
#service.name=actualService
service.name=stubbedService
Hoffe das hilft jemandem :)