Qual è la differenza tra il proxy dinamico JDK e CGLIB?

della documentazione a molla:

Spring AOP usa il Proxy dinamici JDK o cglib per creare il proxy per un dato oggetto bersaglio. (I proxy dinamici JDK sono preferiti ogni volta che hai un’opzione).

Se l’oggetto target da implementare da Proxy implementa almeno un’interfaccia, verrà utilizzato un dinamico proxy JDK. Tutte le interfacce implementate dal tipo di destinazione saranno proxy. Se l’oggetto target non implementa alcuna interfaccia, verrà creato un proxy cglib.

Se si desidera forzare l’uso del proxy cglib (ad esempio, per applicare il proxy a ciascun metodo definito per l’oggetto target , non solo a quelli implementati dalle loro interfacce), puoi farlo. Tuttavia, ci sono alcuni argomenti da considerare:

I metodi finali non possono essere avvisati, poiché non possono essere annullati.

avrà bisogno di binari di cglib 2 sulla loro rotta di classe, mentre quella dinamica I proxy sono disponibili con JDK. La primavera ti avviserà automaticamente quando è necessario cglib e le classi di libreria di cglib non sono nel classpath.

Il costruttore del tuo oggetto proxy verrà chiamato due volte. Questa è una conseguenza naturale del modello proxy cglib con cui viene generata una sottoclasse per ciascun oggetto proxy. Per ogni istanza proxy, vengono creati due oggetti: l’oggetto proxy reale e un’istanza della sottoclasse che implementa il Consiglio. Questo comportamento non è mostrato quando vengono utilizzati i proxy JDK. Di solito, chiamare il produttore del tipo proxy due volte, non è un problema, poiché generalmente gli incarichi vengono effettuati solo e nessuna logica reale viene implementata nel costruttore.

Leave a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *