è Spring Framework 3.0 type-safe
-
10-10-2019 - |
Soluzione
Prima di tutto, che cosa significa "type-safe" significa per un quadro iniezione di dipendenza. Quello che mi viene in mente è che si può ottenere un fagiolo dal contesto specificando un tipo, e non solo un nome di fagioli. Spring 3 permette questo.
In caso contrario, i mezzi di tipo di sicurezza che, quando è possibile definire le dipendenze dal loro tipo. E si può fare questo in tutte le versioni della primavera.
Un'altra cosa è la sicurezza in fase di compilazione. Con la primavera pre-3.0 in cui si doveva distinguere tra due chicchi che condividono la stessa interfaccia (o supertipo) utilizzando il nome di stringa-based. In primavera 3.0 è possibile utilizzare qualificazioni annotazione-based (usando javax.inject.Qualifier
), quindi è tempo di compilazione più sicuro pure.
Un'altra cosa da menzionare è l'uso di farmaci generici. Si può avere, ad esempio @Inject List<MyService>
in primavera.
Altri suggerimenti
Definisci un'annotazione personalizzata utilizzando @Qualifier
Per identificare il fagiolo iniettato senza specificare il nome, abbiamo bisogno di creare un'annotazione personalizzata. Questa è una procedura equivalenti all'uso di JSR 330 annotazioni (Inject) in CDI.
@Target({ElementType.Field, ElementType.Parameter})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @Interface Student {
}
Ora assegnare questa annotazione personalizzata per l'attuazione di EntityDao Interface
@Component
@Student
public class StudentDao implements EntityDao {
}
@Component dice Primavera che questa una definizione di fagioli. annotazione @Student è utilizzato da Spring IOC identificare StudentDao come implementazione EntityDao quando viene utilizzato riferimento EntityDao. Iniettare il fagiolo utilizzando @Autowired e qualificatore personalizzato Qualcosa di simile a questo.
@Autowired
@Student
private EntityDao studentDao; // So the spring injects the instance of StudentDao here.
Questo rende meno uso di String-nomi, che possono essere errata e sono più difficili da mantenere. - Trovo questo post molto utile. http://www.coolcoder.in/2011 /08/how-to-use-type-safe-dependency.html
Dipende da come lo si utilizza e cosa si intende per type-safe (vedi la risposta di Bozho per maggiori informazioni su quest'ultimo): se si utilizza la configurazione XML per produrre i fagioli, allora probabilmente stai type-safe dopo start-up.
Tuttavia, se si utilizza la nuova configurazione di Java Bean (che ha i suoi limiti) si ottiene la sicurezza in fase di compilazione.
Non sto sostenendo il secondo sul primo, ma è una cosa da considerare.