Care este diferența dintre proxy-ul dinamic JDK și CGLIB?

al documentației de arc:

Primăvară AOP Utilizați Proxii dinamice JDK sau CGLIB pentru a crea proxy-ul pentru un anumit obiect țintă. (Proxurile dinamice JDK sunt preferate ori de câte ori aveți o opțiune).

Dacă obiectul țintă care urmează să fie implementat de proxy implementează cel puțin o interfață, va fi utilizat un proxy JDK dinamic. Toate interfețele implementate de tipul de destinație vor fi proxy. Dacă obiectul țintă nu implementează nici o interfață, va fi creat un proxy CGLIB.

Dacă doriți să forțați utilizarea proxy CGLIB (de exemplu, pentru a aplica proxy la fiecare metodă definită pentru obiectul țintă , nu numai celor implementați de interfețele lor), puteți face acest lucru. Cu toate acestea, există unele subiecte care trebuie luate în considerare:

Metodele finale nu pot fi sfătuite, deoarece nu pot fi anulate.

va avea nevoie de Cglib 2 binare pe traseul lor de clasă, în timp ce dinamică Proxy-urile sunt disponibile cu JDK. Primăvara vă va anunța automat când aveți nevoie de CGLIB și clasele bibliotecii CGLIB nu sunt în clasă.

Constructorul obiectului dvs. proxy va fi numit de două ori. Aceasta este o consecință firească a modelului proxy CGLIB prin care este generată o subclasă pentru fiecare obiect proxy. Pentru fiecare exemplu proxy, sunt create două obiecte: obiectul actual proxy și o instanță a subclasei care implementează Consiliul. Acest comportament nu este afișat când sunt utilizate proxy-uri JDK. De obicei, apelați la producătorul de tipul proxy de două ori, nu este o problemă, deoarece în general, sarcinile sunt efectuate numai și nu este implementată nicio logică reală în constructor.

DIV ID = „454116E9FF”>

Leave a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *