АОП в Spring Web MVC не работает

1

Я создаю приложение Spring MVC MyBatis, и я применяю AOP, но его не работает. Я использовал ниже конфигурацию в xml для AOP:

  <context:component-scan base-package="com.peter" />
  <mvc:annotation-driven />
  <aop:aspectj-autoproxy />

И я добавил ниже банок для АОП:

  aspectjrt-1.7.4.jar
  aspectjtools-1.7.4.jar
  spring-aop-3.1.0.RELEASE.jar
  aopalliance.jar

Ниже мой контроллер:

    package com.peter.controllers;

    @Controller
    @RequestMapping(value = "/registration")
    public class RegistrationController {

          private RegistrationValidator validator = null;
          private UserService userService = null;

    @Autowired
    public void setUserService(UserService userService) {
       this.userService = userService;
    }

   public RegistrationValidator getValidator() {
      return validator;
   }

   @Autowired
   public void setValidator(RegistrationValidator validator) {
       this.validator = validator;
   }

    @RequestMapping(method = RequestMethod.GET)
    public String showForm(ModelMap model) {
        System.out.println("show form");
        List<User> users = userService.getAllUser();
        model.addAttribute("users", users);
        User user = new User();
        user.setId(UUID.randomUUID().toString());
        user.getId();
        model.addAttribute("user", user);
        return "registration";
}

   @RequestMapping(value = "/add", method = RequestMethod.POST)
   public ModelAndView add(@ModelAttribute(value = "user") User user,
        BindingResult result) {
      System.out.println("add");

      validator.validate(user, result);
      ModelAndView mv = new ModelAndView("registration");
      if (!result.hasErrors()) {
           userService.saveUser(user);
           user = new User();
           user.setId(UUID.randomUUID().toString());
           mv.addObject("user", user);
       }
       mv.addObject("users", userService.getAllUser());
       return mv;
     }

 }

Ниже мой регистратор АОП:

   package com.peter.logger;

   @Component
   @Aspect
   public class MethodLogger {

    @Pointcut("execution(* com.peter.*.*(..))")
    private void selectAll() {
        System.out.println("Point cut stat");
    }

    @Before("execution(* com.peter.domain.User.setId(..))")
    public void logBefore(JoinPoint joinPoint) {
         System.out.println("logBefore() is running!");
         System.out.println(joinPoint.getSignature().getName());
   }

}

AOP Logger не печатает никакой sysout на консоли, все остальное работает нормально. Его также не показывают ошибок. Может ли кто-нибудь помочь мне?

  • 0
    вы проверяли ошибки компиляции? Также у вас есть методы только внутри пакета com.peter ИЛИ в подпакете com.peter?
  • 0
    @javadev нет ошибок компиляции. У меня есть методы внутри подпакета com.peter
Показать ещё 2 комментария
Теги:
spring-mvc
spring-aop

1 ответ

0

Ты пробовал:

<aop:aspectj-autoproxy proxy-target-class="true">
  <aop:include name="methodLogger"/>
</aop:aspectj-autoproxy>

Также см. Это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню