小编Sel*_*san的帖子

Java - 如何组合验证和AOP注释并在Spring Controller中使用它?

目前我们正在将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)

java validation aop spring spring-mvc

6
推荐指数
1
解决办法
3505
查看次数

标签 统计

aop ×1

java ×1

spring ×1

spring-mvc ×1

validation ×1