tôi cần phải tạo ra một khía cạnh mà tôi tìm thấy khó tả, vì vậy hãy để tôi chỉ ra những ý tưởng:Spring AOP pointcut với một đối số nào đó
- bất kỳ phương pháp trong gói (hoặc bất kỳ gói con) của com. xy ..
- một phương pháp luận là một thực hiện một giao diện javax.portlet.PortletRequest
- có thể cho tôi nhiều đối số trong phương pháp
- họ có thể ở bất kỳ thứ tự
Tôi cần một pointcut và một "xung quanh" Lời khuyên với PortletRequest cho
Hiện nay tôi có SMT như:
@Pointcut("execution(* com.x.y..*.*(PortletRequest,..)) && args(request,..)")
public void thePointcut(PortletRequest request) {
}
@Around("thePointcut(request)")
public Object theAdvice(ProceedingJoinPoint joinPoint, PortletRequest request) {
...
và nhận được một lỗi:
ERROR 10:47:27.159 [ContainerBackgroundProcessor[StandardEngine[Catalina]]] o.s.web.portlet.DispatcherPortlet - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet. mvc.HttpRequestHandlerAdapter': Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: w arning no match for this type name: PortletRequest [Xlint:invalidAbsoluteTypeName]
Bất kỳ trợ giúp đánh giá cao
Trân trọng, Dan
CẬP NHẬT phương pháp tôi đang cố gắng để đánh chặn là:
trong public class com.xyMainClass:
public String mainRender(Model model, RenderRequest request) throws SystemException
trong public class com.xyasd.HelpClass :
public final void helpAction(ActionRequest request, ActionResponse response, Model model)
Của cource, tôi muốn có được đối số thực hiện PortletRequest, đó là RenderRequest từ phương thức đầu tiên và ActionRequest từ phương thức thứ hai.
Kính trọng, Dan
Tôi không nhận được lỗi nữa, nhưng phím tắt không bắt được phương pháp. Để cụ thể hơn, vui lòng kiểm tra bài đăng cập nhật ở trên. – Queequeg
Cả hai phương pháp hoặc chỉ có phương pháp mainRender. Cách bạn đã xác định điểm cắt nó sẽ chỉ phù hợp với những phương thức mà tham số đầu tiên là PortletRequest. Bạn có thể thử một cái gì đó như args (.., yêu cầu, ..) - không chắc chắn nếu điều đó sẽ làm việc.Bạn cũng có thể sắp xếp lại các đối số để có PortletRequest làm đối số đầu tiên. – gkamal
Tôi muốn bắt bất kỳ phương thức nào với một PortletRequest giữa các tham số và có quyền truy cập vào yêu cầu đó. – Queequeg