Jacob Orshalick (autore di Seam Framework: Sperimentare l'evoluzione di Java EE) ha detto:Le espulsioni dei giunti saranno rimosse?
dell'outjection consente di effettuare variabili disponibili dal contesto attuale per l'iniezione o l'accesso attraverso EL. Questo può essere utile se si desidera accoppiare liberamente diversi componenti che iniettano la stessa variabile di contesto (come l'utente corrente, l'hotel prenotato, ecc.). Se si desidera evitare l'espulsione, un'alternativa è utilizzare un metodo @Factory o impostare il valore direttamente nel contesto tramite: Contexts.getConversationContext(). Set ("myVarName", myVar)
Un altro vantaggio è la prestazione. Escludendo un valore nel contesto, è possibile evitare di dover passare attraverso il componente per ottenere quel valore. Questo è particolarmente applicabile nel caso di tabelle di dati con JSF (vedi questa discussione). Ma, come vedrai nella discussione, potresti utilizzare @BypassInterceptors per ottenere lo stesso vantaggio.
L'espulsione è davvero una comodità, ma gli stessi vantaggi possono sicuramente essere raggiunti con altri mezzi. Nota che l'espulsione non è stata inclusa in Web Beans e sarà deprecata o completamente rimossa in Seam 3, quindi questo è un ulteriore motivo per evitarlo quando possibile.
Abbiamo un'applicazione con un sacco di outjections e abbiamo cominciato a sbarazzarsi di loro. Ha detto:
ma gli stessi vantaggi possono sicuramente essere raggiunti con altri mezzi.
ma quali sono questi altri mezzi? Come rimuovere le espulsioni? Ad esempio, in ASP.NET ci sono variabili di sessione. In Seam, puoi escludere var in sessione (un vantaggio in alcune situazioni).
Oppure pagina portata: (per esempio nel ciclo jsf bean supporto viene chiamato più volte (talvolta) Hai un conto che è caricato da una pagina accountid param È possibile caricare il conto, outject con una portata pagina.. e (per evitare l'espulsione) è necessario avere un metodo loadAccount() dove si prende l'account dal db ogni volta che ne avete bisogno ... PEGGIO!)
Non penso che:
Contexts.getConversationContext().set("myVarName", myVar)
è un metodo per evitare l'espulsione.
Questo chiama solo lo stesso contesto in cui la variabile espulsa viene salvata e la modifica in modo profondo (penso che sia esattamente ciò che @Out fa in background).
Domanda 1: Cosa ne pensi ragazzi della loro intenzione? Avete informazioni specifiche su come lo sostituiranno?
Domanda 2: Come si evita l'uso dell'espulsione?
Grazie in anticipo.
ciao, puoi dirmi come raggiungere il basso in cucitura 3 ?? Contexts.getConversationContext(). Set ("myVarName", myVar) –