Jersey/Dropwizard 中 Spring RequestContextHolder 的等价物是什么
What is the equivalent of Spring RequestContextHolder in Jersey/Dropwizard
我是 Dropwizard 的新手,我们需要在我们的 AspectJ 项目(原生而非 AOP)中获取 HttpServletRequest
对象。 AspectJ项目在不同框架的不同项目中作为框架(jar)使用
下面的代码是为 spring 引导项目获取 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 class 中提供一种方法来访问此请求对象。
在您的方面,您可以使用反射来调用此方法并访问 HttpServletRequest
AspectJ 部分:
创建一个注释,该注释可以应用于触发方面建议 before/around/after 方法执行的其余服务方法,具体取决于您希望如何编写它。在建议中,我们通过从 joinPoint
获取目标对象来调用 getHTTPServlet 方法调用
我是 Dropwizard 的新手,我们需要在我们的 AspectJ 项目(原生而非 AOP)中获取 HttpServletRequest
对象。 AspectJ项目在不同框架的不同项目中作为框架(jar)使用
下面的代码是为 spring 引导项目获取 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 class 中提供一种方法来访问此请求对象。 在您的方面,您可以使用反射来调用此方法并访问 HttpServletRequest
AspectJ 部分: 创建一个注释,该注释可以应用于触发方面建议 before/around/after 方法执行的其余服务方法,具体取决于您希望如何编写它。在建议中,我们通过从 joinPoint
获取目标对象来调用 getHTTPServlet 方法调用