Я пытаюсь настроить проект Spring 3 Web MVC, используя @Controller, подход, основанный на аннотациях.
package my.package
@Controller
@RequestMapping("/admin/*")
public class AdminMultiActionController {
@RequestMapping(value = "admin.htm", method = RequestMethod.GET)
public String showAdminSection() {
return "admin";
}
Мой диспетчер-сервлет имеет следующие обработчики контроллера:
<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" />
Веб-приложение работает нормально с поставляемыми артефактами Maven:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
Теперь я хотел добавить @AspectJ AOP. Я получил 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>
добавлено в мое приложениеContext.xml:
<aop:aspectj-autoproxy/>
Обязательно создайте соответствующий bean-компонент в applicationContext.xml:
<bean id="securityInterceptor" class="my.package.service.SecurityInterceptor"/>
И начал излагать @Аспект:
package my.package.service
@Aspect
public class SecurityInterceptor {
@Pointcut("execution(* showAdminSection(..))")// the pointcut expression
private void foo() {
System.out.println("fooo");
}// the pointcut signature
Теперь это то место, где оно перестало работать.
«fooo» никогда не печатается.
Может быть, потому что объекты с точечным вырезанием (правописание?) Должны быть bean-bean-компонентами, а мой @Controller в сочетании с DefaultAnnotationHandlerMapping не воспринимается как таковой?
Любая помощь будет оценена. Если я забыл включить какую-либо информацию, пожалуйста, спросите.
Надеюсь, что кто-то может помочь мне здесь.
Большое спасибо!