目前我们正在将Struts 1.1项目迁移到Spring 4.x.
我们已经成功地将Action类转换为Controller并将formbean转换为Model,甚至我们也能够将struts验证转换为Spring验证.
但是当我们尝试为所有控制器添加AOP时,我们遇到了一个问题.目的是添加一个日志来测量所有控制器方法所需的时间.
下面是代码片段,
@Component
@Controller
public class LoginController {
@Autowired
private LoginValidator loginValidator;
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(loginValidator);
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginUser(@Valid @ModelAttribute Login form, BindingResult bindingResult) {
System.out.println("Entering loginController.loginUser method");
}
}
Run Code Online (Sandbox Code Playgroud)
我们使用下面的切点来应用aop,
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class Logging {
@Pointcut("execution(* com.controller.*.*(..))")
public void businessLogicMethods() {}
@Around("businessLogicMethods()")
public Object logAround(ProceedingJoinPoint jp) {
System.out.println("around() is running!");
System.out.println(jp.getSignature().getName());
System.out.println(jp.getArgs());
Object obj …Run Code Online (Sandbox Code Playgroud)