Cal é a diferenza entre o Proxy Dynamic JDK e CGLIB?

da documentación de primavera:

Primavera AOP Use o Proxies dinámicos JDK ou CGLIB para crear o proxy para un obxecto de destino dado. (Os proxies dinámicos JDK son preferidos sempre que teña unha opción).

Se o obxecto de destino a implementar proxy implementa polo menos unha interface, usarase un proxy jdk dinámico. Todas as interfaces implementadas polo tipo de destino serán proxy. Se o obxecto de destino non implementará ningunha interface, crearase un proxy cglib.

Se desexa forzar o uso do proxy cglib (por exemplo, para aplicar proxy a cada método definido para o obxecto de destino , non só para os que están implementados polas súas interfaces), podes facelo. Non obstante, hai algúns temas a ter en conta:

Os métodos finais non se poden aconsellar, xa que non poden ser anulados.

Necesitará binarios de CGLIB 2 na súa ruta de clase, mentres que a dinámica Os proxies están dispoñibles con JDK. A primavera notificarache automaticamente cando necesites CGLIB e as clases de bibliotecas CGLIB non están na clase.

O constructor do teu obxecto proxy chamarase dúas veces. Esta é unha consecuencia natural do modelo de proxy CGLIB polo que se xera unha subclase para cada obxecto proxy. Para cada instancia proxy, créanse dous obxectos: o obxecto proxy real e unha instancia da subclase que implementa o Consello. Este comportamento non se mostra cando se usan proxies JDK. Normalmente, chame ao fabricante do tipo de proxy dúas veces, non é un problema, xa que en xeral as tarefas só se realizan e non se implementa a lóxica real no constructor.

Leave a Comment

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *