【发布时间】:2018-05-06 04:39:57
【问题描述】:
我在(jersey 2.6 类和)servlet 旁边有 spring 应用程序。
我需要从 jersey/非 spring 上下文中获取 Spring bean,
类似的question 建议在上下文的静态包装器中获取上下文
public static ApplicationContext getContext() {
return context;
}
如何确定上下文是否已加载或不为空?
如果我不能,我应该如何等待/检查,直到它加载弹簧上下文?
如果从 jersey 上下文调用或从 调用 bean 一个简单的 HttpServlet 代码
编辑
Jersey 使用 jersey-spring3 依赖 jar 可以正常工作,所以 我的问题只是关于 Spring 控制之外的 Servlet
编辑 2
应用程序加载的 spring 不同于 @entpnerd 建议的 article
它注册一个实现WebApplicationInitializer的Servlet
public class MyWebAppInitializer implements WebApplicationInitializer {
但在 web.xml 中也配置了DispatcherServlet
DispatcherServlet 怎么只能在 Spring 加载后加载?
因为我们在它的 init 方法中添加了自动装配功能:
WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext())
.getAutowireCapableBeanFactory().autowireBean(this);
在服务请求之前添加超时是最喜欢的解决方案,还是对类加载进行调整可以解决这个问题?
编辑 3
【问题讨论】:
-
你确定不能让 Spring 在你的情况下注入 Jersey 吗?这是一篇很好的文章,解释了如何在 Spring Boot 中使用 Jersey。它很旧,但仍然应该是相关的。 geowarin.github.io/…
-
感谢您的建议,我使用 jersey 2.6 而不是 3,我更喜欢包括从 HTTPServlet 获取 bean 的解决方案
-
Spring 的方式是让 Spring 上下文初始化自己,并且只有在启动其他所有内容之后。如果您想知道是否在需要时加载 Spring 应用程序上下文,您应该查看您的启动过程。
-
在tomcat 8下,我的Servlet是在web.xml中定义的,而Spring是AnnotationConfigWebApplicationContext
标签: java spring servlets classloader autowired