[英]What is the equivalent of Spring RequestContextHolder in Jersey/Dropwizard
我是 Dropwizard 的新手,我們需要在我們的 AspectJ 項目(本機不是 AOP)中獲取HttpServletRequest
對象。 AspectJ項目在不同框架的不同項目中作為框架(jar)使用
下面的代碼是為 Spring Boot 項目獲取HttpServletRequest
。
Class<?> requestHolder = Class.forName("org.springframework.web.context.request.RequestContextHolder");
Method method = requestHolder.getMethod("currentRequestAttributes");
Object currentAttributes = method.invoke(requestHolder);
Class<?> servletAttributes = Class.forName("org.springframework.web.context.request.ServletRequestAttributes");
currentAttributes = servletAttributes.cast(currentAttributes);
method = currentAttributes.getClass().getMethod("getRequest");
Object httpRequest = method.invoke(currentAttributes);
if (httpRequest instanceof HttpServletRequest) {
return (HttpServletRequest) httpRequest;
}
Jersey/Dopwizard 怎么辦?
您可以在代碼中注入 HttpServletRequest 對象,如下所示
@Inject
private Provider<HttpServletRequest> requestProvider;
您可以在 WebService 類中提供一個方法來訪問此請求對象。 在您的方面,您可以使用反射來調用此方法並訪問 HttpServletRequest
AspectJ 部分:創建一個注解,該注解可以應用於其余服務方法,該方法根據您想要的編寫方式在方法執行之前/周圍/之后觸發方面建議。 在通知中,我們通過從 joinPoint 獲取目標對象來調用 getHTTPServlet 方法調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.