Java Jersey/Dropwizard中Spring RequestContextHolder的等价物是什么

Java Jersey/Dropwizard中Spring RequestContextHolder的等价物是什么,java,spring-boot,jersey,aspectj,dropwizard,Java,Spring Boot,Jersey,Aspectj,Dropwizard,我是Dropwizard的新手,我们需要在AspectJ项目中获取HttpServletRequest对象(本机而非AOP)。AspectJ项目在不同框架的不同项目中用作框架(jar) 下面的代码是针对spring boot项目的getHttpServletRequest classrequestholder=Class.forName(“org.springframework.web.context.request.RequestContextHolder”); Method=requestH

我是Dropwizard的新手,我们需要在AspectJ项目中获取
HttpServletRequest
对象(本机而非AOP)。AspectJ项目在不同框架的不同项目中用作框架(jar)

下面的代码是针对spring boot项目的get
HttpServletRequest

classrequestholder=Class.forName(“org.springframework.web.context.request.RequestContextHolder”);
Method=requestHolder.getMethod(“currentRequestAttributes”);
对象currentAttributes=method.invoke(requestHolder);
类servletAttributes=Class.forName(“org.springframework.web.context.request.ServletRequestAttributes”);
currentAttributes=servletAttributes.cast(currentAttributes);
方法=currentAttributes.getClass().getMethod(“getRequest”);
对象httpRequest=method.invoke(currentAttributes);
if(HttpServletRequest的httpRequest实例){
返回(HttpServletRequest)httpRequest;
}

Jersey/Dopwizard怎么办?

您可以在代码中注入HttpServletRequest对象,如下所示

@Inject
private Provider<HttpServletRequest> requestProvider;
@Inject
私人提供者请求提供者;
您可以在WebService类中提供一个方法来访问此请求对象。 在您的方面中,您可以使用反射来调用此方法并访问HttpServletRequest

AspectJ部分:
创建一个可应用于rest服务方法的注释,该方法根据您希望如何编写在方法执行之前/周围/之后触发方面建议。在建议中,我们通过从joinPoint获取目标对象来调用getHTTPServlet方法调用

,没有等效的方法,但我认为您可以轻松地做出类似的事情。请看源代码。@PaulSamsotha在Jersey我无法理解,从哪里可以获取HttpServlet对象请求中最早的一点是在servlet过滤器中。您甚至可以尝试进入注入系统。不幸的是,我对AspectJ了解不够,无法提供任何指导。HttpServletRequest当然可以注入Jersey应用程序中的任何位置。创建一个可应用于rest服务方法的注释,该方法根据您希望如何编写在方法执行之前/周围/之后触发方面建议。在通知中,我们通过从连接点获取目标对象来调用getHTTPServlet方法调用。它起作用了。谢谢