Momentan migrieren wir ein Struts 1.1-Projekt in Spring 4.x.Java - Wie kombiniere ich Validierungs- und AOP-Annotationen und verwende sie im Spring Controller?
Wir haben Action-Klasse erfolgreich in Controller und Formbean in Model konvertiert und sogar können wir die Struts-Validierung in Spring-Validierung konvertieren.
Aber wir stehen vor einem Problem, wenn wir versuchen, AOP für alle Controller hinzuzufügen. Der Zweck besteht darin, ein Protokoll hinzuzufügen, um die für alle Controller-Methoden benötigte Zeit zu messen.
unten ist Code-Schnipsel,
@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");
}
}
wir die untenstehende Punkt-Schnitt AOP wird
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 = null;
try {
obj = jp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("******");
return obj;
}
}
Entweder Validation oder AOP zu einem Zeitpunkt arbeiten anzuwenden verwenden. Wenn AOP nicht angewendet wird, wird die Validierung ausgelöst. Wenn AOP angewendet wird, wird nur AOP ausgelöst.
Kann mir jemand helfen?
Danke ...
Ich bin in der Lage, das Problem zu replizieren. Etwas, das mit der Art und Weise, wie Sie Aspekte verwenden, wörtlich wird. Nach einer Lösung suchen. Bitte schauen Sie, ob dieser Link Ihnen hilft. http: //forum.springio/forum/spring-projekte/web/64867-controller-kombinieren-mit-aspekt-kann-t-arbeiten .. – ArunM