Comment puis-je combiner @Aspect avec @Contrôleur au Printemps 3?
Je suis en train de configurer un Printemps 3 Web MVC projet, en utilisant le @Contrôleur, d'annotation.
package my.package
@Controller
@RequestMapping("/admin/*")
public class AdminMultiActionController {
@RequestMapping(value = "admin.htm", method = RequestMethod.GET)
public String showAdminSection() {
return "admin";
}
Mon répartiteur-servlet a la suite de Contrôleur des gestionnaires:
<context:component-scan base-package="my.package" />
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
De la webapp est de bon fonctionnement à l'aide des artefacts maven:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
Maintenant, je voulais ajouter @AspectJ AOP. J'ai eu la libs:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.9</version>
</dependency>
ajouté à mon applicationContext.xml:
<aop:aspectj-autoproxy/>
Fait en sorte de créer pertinentes de haricot dans le applicationContext.xml ainsi:
<bean id="securityInterceptor" class="my.package.service.SecurityInterceptor"/>
Et a commencé à décliner le @Aspect:
package my.package.service
@Aspect
public class SecurityInterceptor {
@Pointcut("execution(* showAdminSection(..))")//the pointcut expression
private void foo() {
System.out.println("fooo");
}//the pointcut signature
Maintenant c'est où il a cessé de travailler.
"fooo" n'est jamais imprimé.
Pourrait-il être, parce que l'pointcutted (orthographe?) les objets doivent être de printemps-géré les haricots et mon @Contrôleur en combinaison avec la DefaultAnnotationHandlerMapping n'est pas perçu comme tel?
Toute aide serait appréciée. Si j'ai oublié d'inclure toute information, merci de demander.
J'espère que quelqu'un pourra m'aider ici.
Merci beaucoup!
OriginalL'auteur chzbrgla | 2010-10-21
Vous devez vous connecter pour publier un commentaire.
La coupe transverse (pointcut) méthode définit la coupe transverse (pointcut), il n'est pas appelée sur un match, vous devez définir quelque chose qui se produit effectivement. par exemple,
OriginalL'auteur Affe
Argh dieu.. a finalement obtenu ce travail!
Merci pour votre réponse Affe!
Pour les curieux:
Se déplacer à la fois pour le répartiteur de servlet
Bien sûr Affe est juste: n'oubliez pas les conseils :p
OriginalL'auteur chzbrgla
À la deuxième chzbrgla, pour ceux qui considèrent cela plus tard (comme moi), mon problème s'est résolu après un déplacement du composant contrôleur de la numérisation et de l'aop config pour le répartiteur de servlet comme suit:
Comme vous pouvez le voir, le composant de balayage toujours fonctionné dans mon cas. Déplaçant à la fois pour le répartiteur de servlet résolu pour moi.
La apspect (myApect1, dans ce cas) a été configuré comme suit:
OriginalL'auteur Scifiballer24