Spring AOP et à l'Exception de l'Interception
Je suis en train de configurer le Ressort pour qu'il exécute des conseils lorsqu'une exception spécifique sous-classe (MyTestException
) est jeté:
public class MyTestExceptionInterceptor implements ThrowsAdvice {
public void afterThrowing(Method method, Object[] args, Object target, Exception exc) {
//I want this to get executed every time a MyTestException is thrown,
//regardless of the package/class/method that is throwing it.
}
}
Et la configuration XML:
<bean name="interceptor" class="org.me.myproject.MyTestExceptionInterceptor"/>
<aop:config>
<aop:advisor advice-ref="interceptor" pointcut="execution(???)"/>
</aop:config>
J'ai le sentiment que je devrais être à l'aide de la target
coupe transverse (pointcut) spécificateur (au lieu de execution
) puisque - selon le Printemps docs - il semble que target
me permet de spécifier le type d'exception pour la comparaison, mais je ne suis pas sûr si c'est faux, ou ce que mon pointcut
attribut doit ressembler.
Je grandement préfère garder l'AOP config fait en XML (contrairement à Java/annotations, mais je pourrais probablement traduire une annotation solution basée sur XML, en cas de besoin.
OriginalL'auteur IAmYourFaja | 2011-12-01
Vous devez vous connecter pour publier un commentaire.
J'utilise un
<aop:après des jets de>
de l'élément et sesthrowing
attribut.Printemps config
La
throwing
attribut est le nom du paramètre de l'aspect de la méthode de gestionnaire d' (ici c'estLogException.logIt
) qui est appelée à l'exception:Aspect
Le XML et la méthode de liste déroulante définit le type d'exception que l'aspect s'applique. Dans cet exemple,
ThrowingClass
jetteAnException
etAnotherException
. SeulementAnException
aurez les conseils appliquée en raison de l'avis de la signature de la méthode.Voir l'exemple du projet sur github pour la totalité du code source.
OriginalL'auteur Dave Newton
Découvrez une AfterThrowingAdvice. On en trouve un exemple ici (de la recherche pour "Après avoir jeté des conseils") et vous le trouverez.
OriginalL'auteur Andreas Wederbrand