2010-08-25 61 views
3

permet de dire que j'ai un bean appelé avec deux méthodes 'foo' et 'goo' et 'goo' est marqué avec l'appel d'interception AOP.
est-il possible d'écrire n'importe quel morceau de code dans 'foo' afin d'invoquer la méthode 'goo' pas directement mais à travers l'enveloppe de proxy du bean afin d'activer la partie AOP de celui-ci?Invoquer un proxy AOP en appelant la méthode dans le bean

public Class Pojo{ 

    public void foo(){ 
    //what should I write here in order to activate 'goo' in transactional mode?? 
    } 

    @Transactional 
    public void goo(){ 
    } 
} 

Répondre

0

je ne pouvais pas utiliser l'option autowired. Peut-être est-ce parce que j'utilise la réflexion pour invoquer goo() (et toute autre méthode aussi) de foo().
Donc, finalement, ce qui résout mon problème était d'ajouter du code foo() qui cherchera la classe de bean proxy de Pojo. et appelez le mothd à l'aide de Sun invokation sur le bean proxy cela a également appelé l'appel AOP.
Impossible de trouver une meilleure solution de contournement.

4

Oui, mais vous avez besoin d'y accéder par le proxy de printemps:

public Class Pojo{ 

    @Autowired 
    private Pojo springProxy; 

    public void foo(){ 
    springProxy.goo(); 
    } 

    @Transactional 
    public void goo(){ 
    } 
} 
+0

Merci pour la réponse très rapide. Laissez-moi vérifier cela et je reviendrai à vous. J'ai besoin de vérifier comment l'utiliser en utilisant invoke() donc je vais avoir une solution générique – Spiderman

+1

Autowiring ne fonctionnera pas pour l'auto-injection. –