Obecnie migrujemy projekt Struts 1.1 do Spring 4.x.Java - jak połączyć adnotacje walidacji i AOP i użyć go w kontrolerach Spring?
Pomyślnie przekonwertowaliśmy klasę Action na Controller i formbean na Model, a nawet jesteśmy w stanie przekonwertować sprawdzanie poprawności na Spring validation.
Ale mamy do czynienia z problemem, gdy próbujemy dodać AOP dla wszystkich kontrolerów. Celem jest dodanie dziennika do pomiaru czasu potrzebnego do wszystkich metod kontrolera.
poniżej fragment kodu,
@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");
}
}
Używamy poniżej punktu-cut zastosowanie 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 = null;
try {
obj = jp.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("******");
return obj;
}
}
Albo Validation lub AOP pracuje naraz. Jeśli AOP nie zostanie zastosowane, to walidacja zostanie uruchomiona. Jeśli stosuje się tylko AOP, to jest on wyrzucany.
Czy ktoś może w tym pomóc?
Dzięki ...
Jestem w stanie powtórzyć problem. Coś, co łamie sposób, w jaki używasz aspektów. Sprawdzasz rozwiązanie. Sprawdź, czy ten link Ci pomoże. http: //forum.spring.io/forum/spring-projects/web/64867-kontroler-połącz-z-aspektem-can-t-work .. – ArunM