Domanda

mi chiedevo quale consiglio la comunità potesse darmi l'uso dell'annotazione @BypassInterceptors durante la programmazione con Seam? Ho letto su aumentando le prestazioni delle applicazioni Seam, e senza fallire ogni articolo cita che l'aggiunta di questa annotazione può aumentare le prestazioni. La mia domanda è, dove dovrebbe essere applicato? Ci sono regole generali che dicono "durante la scrittura di un componente che fa XXX è possibile applicare in modo sicuro @BypassInterceptors"? Ad esempio, dovrei applicarlo ai miei classi di entità? Che dire di un DAO? Sarei molto curioso di sapere ciò che chiunque altro là fuori sta facendo, così come che tipo di aumento di prestazioni si è visto quando si applica in modo corretto.

È stato utile?

Soluzione

funzionalità intercettore Se siete sicuri non è necessario, si può contare su @BypassInterceptor annotazione intercettori disabilitare. La funzionalità include

E così via ...

A causa funzionalità bi-jection si ottiene utilizzando riflessione (runtime) - V., ad esempio, questo domanda dove si può avere un'idea di quanto le prestazioni riflessione sovraccarico può aggiungere -, può essere evitato (oltre @BypassInterceptor) utilizzando

• Component.getInstance ()

• di getter e setter di

Se hai

@Name("personManager")
public class PersonManager {

    private @In Person person;

}

<h:inputText value="#{person.name}"/>

Puoi al posto di @In annotazione

@Name("personManager")
public class PersonManager {

    private Person person;

    public Person getPerson() {return this.person;}
    public void setPerson(Person person) {this.person = person;}

}

Ma non dimenticate (Avviso suo attributo più recente valore)

<h:inputText value="#{personManager.person.name}"/>

Altri suggerimenti

Solo un follow-up al post di Arthur.

Come regola generale, se per esempio, si sta facendo qualche calcolo su un metodo che non usa nessuno dei intercettori in Seam, vale a dire: il calcolo dei valori, allora è una buona cosa per segnare quel metodo con @BypassInterceptors .

Ma sempre Test a fondo dopo l'aggiunta di questa annotazione. Ho sperimentato strani insetti perché ho avuto questa annotazione sui metodi e le classi che non è venuto sul test iniziali.

E 'più saggio lasciare che sia, se non si sa esattamente cosa si sta facendo o che cosa l'annotazione sta facendo.

Un articolo lettura obbligata da Dan Allen (Seam in Action) sull'argomento è qui (parte 1) e qui (parte 2) . Esso copre @BypassInterceptors e molti altri problemi relativi alle prestazioni in un'applicazione Seam, come il rendering condizionale.

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