1
我創建的Spring MVC的MyBatis應用程序,我將AOP應用,但它不是working.I已經在XML中使用以下配置AOP:AOP在Spring Web MVC框架不工作
<context:component-scan base-package="com.peter" />
<mvc:annotation-driven />
<aop:aspectj-autoproxy />
而且我在下面加AOP的罐子:
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;
}
}
下面是我的AOP記錄儀:
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記錄器不在控制檯上打印任何sysout,其他所有工作都正常。它也沒有顯示任何錯誤。有人可以幫我嗎?
你檢查了編譯錯誤嗎?你也有方法只是在com.peter包或在com.peter的子包中? – 2015-02-07 04:44:29
@javadev:沒有編譯錯誤。我有com.peter的子包內的方法 – Peter 2015-02-07 04:51:15
您應該在selectAll()方法上將Pointcut定義爲@PointCut(「execution(* com.peter .. *。*)」)。注意:在peter之後是兩個點 – 2015-02-07 04:54:14