2008-09-28 13 views
4

Lors de l'utilisation de proxies dynamiques, comment accéder aux annotations de l'objet sous-jacent?Lors de l'utilisation de proxies dynamiques, comment accéder aux annotations de l'objet sous-jacent?

Plus précisément, je suis annoter les paramètres d'un objet ORM avec @Column (« client_id »), puis faire un proxy dynamique garder une trace quand sont appelés les setters annotés, mais ...

Il ne Il semble que le proxy annoté conserve l'une des annotations sous-jacentes si loin d'effectuer une réflexion sur chaque invocation, comment puis-je faire en sorte que le proxy ait les annotations de la classe que c'est Proxying?

Merci, Allain

Répondre

4

AFAIK, cela dépend de votre injection de bytecode lib. Souvenez-vous également que les annotations ne sont généralement pas héritées (imposées par la spécification Java). Si vous souhaitez accéder à la classe d'origine et que vous utilisez CGLIB, vous pouvez utiliser cet extrait:

if (Enhancer.isEnhanced(getClass())) { 
    currClass = UnEnhancer.unenhance(getClass()); 
} else { 
    // else, let's get the original class directly 
    currClass = getClass(); 
}