Domanda

ho notato da diverse pagine web che apparentemente Primavera 3.0 supporta @Inject dalla JSR-330. Come ci piace molto utilizzare JSR-299 sintassi per l'iniezione di dipendenza nelle nostre biblioteche per entrambe le applicazioni web e applicazioni stand-alone, e hanno alternative alla saldatura, sarebbe bello se Primavera potrebbe fare questo.

Essendo un novizio di primavera, ho provato a scaricare la distribuzione Spring Framework e mettere tutti i vasetti sul percorso di generazione Eclipse. No Iniettare annotazione quindi il mio progetto di test esistente utilizzando Weld non ha compilato.

Può questo essere fatto con la Primavera? Che cosa devo fare per farlo funzionare?

(Sono consapevole che Guice alla fine sosterrà anche questo. E 'solo in SVN, per ora, e se c'è un rilascio primavera ufficiale che può, che sarebbe meglio.)


Si può fare. Il vaso JSR-330 deve essere scaricato separatamente, e cglib per analizzare le scritte manualmente @Configuration classi, oltre a un bene comune che accedono implementazione.

La più grande differenza da saldare sembra essere che le esigenze di cablaggio da scrivere manualmente invece che magicamente trovato (un po 'più ingombrante, ma può rendere le applicazioni più robuste), più il tempo di avvio è molto meno. Sono ancora nuovo a primavera -? C'è un modo per avere @Configuration classi autodiscovered

È stato utile?

Soluzione

Da Primavera documentazione 3.0.x Riferimento :

  

JSR 330 di @Inject annotazione può essere utilizzato al posto di @Autowired di primavera negli esempi che seguono. @Inject non ha una proprietà richiesto a differenza annotazione @Autowire Spring che ha una proprietà necessaria per indicare se il valore di essere iniettato è facoltativo. Questo comportamento viene attivata automaticamente se avete la JAR JSR 330 nel classpath.

Così si può rendere il codice agnostica del quadro DI utilizzando @Inject, ma è ancora necessario includere un vaso con le classi javax.inject nel progetto perché la primavera non viene fornito essa stessa. È possibile trovare il vaso in questione nella sezione download a JSR-330 del sito di Google Code .

Altri suggerimenti

Il pacchetto javax.inject non è incluso come parte del Spring 3, ma lo fa sostenerlo se è presente.

Se si guarda alla fonte per AutowiredAnnotationBeanPostProcessor, vedrete il costruttore utilizza la riflessione per individuare javax.inject.Inject, e registra un messaggio se lo trova. Non c'è alcuna dipendenza in fase di compilazione su di esso.

È necessario individuare le JSR-330 JAR da qualche altra fonte (ad esempio il JavaEE 6 SDK).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top