Quando utilizzo i proxy dinamici, come posso accedere alle annotazioni dell'oggetto sottostante?

StackOverflow https://stackoverflow.com/questions/144936

  •  02-07-2019
  •  | 
  •  

Domanda

Quando utilizzo i proxy dinamici, come posso accedere alle annotazioni dell'oggetto sottostante?

In particolare sto annotando le impostazioni di un oggetto ORM con @Column (" client_id ") e quindi facendo un proxy dinamico per tenere traccia di quando vengono chiamati i setter annotati, ma ...

Non sembra che il proxy annotato mantenga nessuna delle annotazioni sottostanti così a corto di riflessione su ogni invocazione, come faccio a fare in modo che il proxy abbia le annotazioni della classe che sta proxy?

Grazie, Allain

È stato utile?

Soluzione

AFAIK, dipende dalla tua lib di iniezione bytecode. Inoltre, ricorda che in genere le annotazioni non vengono ereditate (imposte dalle specifiche Java). Se vuoi accedere alla classe originale e stai usando CGLIB, puoi usare questo snippet:

 if (Enhancer.isEnhanced(getClass())) {
    currClass = UnEnhancer.unenhance(getClass());
 } else {
    // else, let's get the original class directly
    currClass = getClass();
 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top