Tôi muốn chạy một số mã trước mọi phương thức trong một Spring (3.2.3) @Controller. Tôi đã xác định sau nhưng nó sẽ không chạy. Tôi nghi ngờ rằng biểu thức chỉ đường không chính xác.Phím tắt AOP mùa xuân cho tất cả các phương pháp trong bộ điều khiển
phối-servlet.xml
<aop:aspectj-autoproxy/>
<bean class="com.example.web.controllers.ThingAspect"/>
c.e.w.c.ThingAspect
@Pointcut("execution(com.example.web.controllers.ThingController.*(..))")
public void thing() {
}
@Before("thing()")
public void doStuffBeforeThing(JoinPoint joinPoint) {
// do stuff here
}
Có lẽ một [ '@ ControllerAdvice'] (http://docs.spring.io/spring/docs/4.0.3.RELEASE/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice .html) là những gì bạn đang tìm kiếm. –
Có phải (a) không chạy ở tất cả hoặc (b) không chạy cho một số phương pháp? Điều này sẽ giúp chẩn đoán vấn đề của bạn. – Phil
Tôi không biết ControllerAdvice tồn tại nhưng nhìn vào tài liệu hướng dẫn để đính kèm ExceptionHandler, InitBinder và ModelAttribute vào một số bộ điều khiển. Tôi đã tìm kiếm một cái gì đó để chạy trước khi mọi phương pháp mà trong trường hợp của tôi là tất cả các phương thức chú thích RequestMapping. Hiện tại, Aspect không được gọi cho bất kỳ phương pháp nào. Tôi có thể sử dụng một Interceptor mùa xuân nhưng AOP dường như lý tưởng phù hợp với nhiệm vụ. – Goose