spring 3.0 aop coupe transverse (pointcut) n'est pas bien formé: s'attendre à "nom du modèle" erreur
Ce qui suit est ma coupe transverse (pointcut) et conseiller de la déclaration de
//PointCut on A method which takes two parameters and is in a DAO
@Pointcut("execution(backend.repository.QuestionsRepository.AnswerQuestion (..))")
public void answerQuestionPointCut() {}
@Around(
value="web.activity.advisors.UserActivityAdvisor.answerQuestionPointCut()",
argNames="question,answer"
)
//Do something
}
J'obtiens l'erreur suivante
Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 65
execution(backend.repository.QuestionsRepository.AnswerQuestion (..))
^
Suis coincé sur ce, Tous les pointeurs
OriginalL'auteur user463008 | 2010-09-30
Vous devez vous connecter pour publier un commentaire.
Il vous manque le type de retour:
et vous devez lier les noms d'argument, quelque chose comme ceci:
Exemple De Solution
Interface De Service:
Mise en œuvre de la classe:
Spring AOP aspect:
Printemps Contexte XML:
Classe principale pour les essais de:
Maintenant, voici une méthode main pour tester l'ensemble du processus. Il commence un Printemps ApplicationContext
sans configuration XMLci-dessus, XML définissant le service de haricots et de l'aspect (il s'avère que la solution sans XML a travaillé seulement parce que j'avais AspectJ tissage allumé, je ne sais pas ce que les haricots-je inclure pour permettre aspectj-autoproxy, j'ai donc maintenant utiliserClassPathXmlApplicationContext
avec ce minimum XML):De sortie:
Cela devrait vous obtenir a commencé. En gros: vous devez vérifier que les méthodes que vous interception sont soutenus par une interface de service si vous utilisez le JDK procurations de printemps (par défaut). Lire ici sur Spring AOP proxy mécanismes.
Remarque:
Comme vous le voyez je lier les arguments de la méthode de l'aspect, et pas la coupe transverse (pointcut), ce qui rend la coupe transverse (pointcut) réutilisable pour les méthodes avec des arguments différents des signatures. Mais il serait également possible de les lier à la coupe transverse (pointcut), comme ceci:
Je ne pouvais pas comprendre que le b signifie, plus besoin de quelques directions
J'ai essayé ce que tu dit toujours obtenir la même exception
Coupe transverse (pointcut) n'est pas bien formé: s'attendre à "nom du modèle" à la position d'un caractère 66 exécution(*backend.référentiel.QuestionsRepository.AnswerQuestion (..)) && args(question, réponse)
Merci une tonne .. il a obtenu de travail, manquait le type de retour et les autres points que vous avez mentionnés. le printemps de la documentation est vraiment déroutant
OriginalL'auteur Sean Patrick Floyd
Vous devriez écrire comme cela
attention à
"... (* backend..."
*
et un espace doit être utilisé.OriginalL'auteur Mr.Strolling
Note que vous avez le même comportement avec le
@Before
annotation dansorg.aspectj.lang.annotation.Before
.Vous pouvez utiliser l'expression sans exécution mot-clé et sans type de retour:
ou avec les deux:
mais vous ne pouvez pas utiliser le
execution
mot, sans l'aide du type de retour.OriginalL'auteur trinity