1

I am creating Spring MVC MyBatis application and I am applying AOP but its not working.I have used below configuration in the xml for AOP :

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

And I have added below jars for AOP :

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

Below is my Controller :

    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;
     }

 }

Below is my AOP Logger :

   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());
   }

}

The AOP Logger not printing any sysout on the console,everything else is working fine. Its not showing any errors also. Could anybody please help me in ?

Peter
  • 185
  • 6
  • 21

1 Answers1

0

Have you tried:

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

Also see this.

Community
  • 1
  • 1
manish
  • 19,695
  • 5
  • 67
  • 91