Comment créer un aspect de la classe, qui n'est pas un haricot à l'aide de Spring AOP?
Je travail sur une application ancienne, où le Printemps AOP (à savoir ProxyFactoryBean
) est utilisé.
J'ai besoin d'ajouter un aspect autour d'une méthode d'une classe. Cette classe est pas un haricot.
Le AspecjJ coupe transverse (pointcut) expression serait comme ceci:
execution(* xyz.package.Class.method())
J'ai créé un MethodInterceptor
et AspectJExpressionPointcut
, mais je ne sais pas comment faire ces deux travailler ensemble.
MODIFIER:
Je n'ai pas le code source de cette classe, c'est une 3ème partie de la bibliothèque. Les instances de cette classe ne sont pas créés par moi-même, ni dans le code source, ni dans la configuration spring comme les haricots. Elle est utilisée en interne par la bibliothèque.
Toute aide appréciée.
Eh bien, j'ai un pool de connexion, c'est la fève et de tous les objets internes sont créés dans ce bean (pas de définition). Je veux créer de l'aspect de journalisation, qui enregistrera le temps qu'il faut pour obtenir la connexion de la base de données. C'est la méthode de l'une de ces objets internes.
Donc, actuellement, comment voulez-vous obtenir une référence à (une instance de) cette classe? De toute façon je pense qu'avec AspectJ et certains AroundAdvice vous seriez en mesure de faire un certain profilage sur cette application. Le printemps n'est pas nécessaire d'utiliser AspectJ
OriginalL'auteur Ula Krukar | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les temps de charge de tissage avec plein AspectJ tel que décrit ici, il ne nécessite pas l'accès à la source de classes conseillé, ni de contrôle sur leur instanciation (bien que cela nécessite
<context:load-time-weaver />
et la présence du tisserand lui-même à l'aide de-javaagent:...
ou d'autres méthodes).OriginalL'auteur axtavt
Essayer
@Configurable
. Il est expliqué dans cette docs.(vous auriez besoin
<context:load-time-weaver />
)Mise à jour
Vous pouvez faire un 3ème partie composante d'un bean par liste dans
applicationContext.xml
comme<bean class=".." />
(vous n'avez pas besoin@Configurable
)alors pourquoi ne pas ajouter à applicationContext.xml ? (voir ma mise à jour)
Ok, mais comment puis-je ajouter @Configurable sur le haricot créé comme ça?
vous n'avez pas besoin d' @Configurable avec cette option - la classe est déjà un haricot
J'ai mis à jour la question avec plus de détails. Malheureusement, je pense que cette approche ne va pas m'aider,
OriginalL'auteur Bozho