从单独的上下文访问弹簧上下文
Posted
技术标签:
【中文标题】从单独的上下文访问弹簧上下文【英文标题】:Access a spring context from separate context 【发布时间】:2014-05-31 06:18:35 【问题描述】:我的主 Spring 上下文是在我的应用程序启动时创建的。在此上下文中是数据库连接和嵌入式 Web 服务器。
嵌入式网络服务器随后以 DispatcherServlet
和它自己的 Spring 上下文启动。
我希望从其中一个 DispatcherServlet 访问数据库,但由于连接不在其上下文中,我不能。
解决这个问题的Java/Spring方法是什么?
这是我的 web.xml:
<servlet>
<servlet-name>App</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/jettycontext.xml</param-value>
</init-param>
</servlet>
这是入口主方法:
try (ConfigurableApplicationContext context = new GenericXmlApplicationContext("maincontext.xml"))
JServer server = context.getBean(JServer.class);
server.start();
这是 JServer.start() 方法:
server = new Server(8080);
server.setHandler(new WebAppContext("./webapp", "/"));
server.start();
server.join();
【问题讨论】:
能否发布您正在使用的 web.xml(如果您确实在使用)? 【参考方案1】:尝试添加
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:maincontext.xml</param-value> <!-- or wherever else you have the maincontext.xml file-->
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
致web.xml
请参阅 this、this 和 this 教程。
This、this 和 this SO 问题描述了两种上下文之间的区别
【讨论】:
呃,我是 Java 新手,但我 99.99% 确信这不是我想要的。这不会只是再次加载主上下文,而是在 servlet 中。 它应该使主上下文成为 Web 上下文的父级(您现在正在 Dispatcher Servlet 中加载它),从而使 Web 上下文的 bean 可以访问根上下文的 bean。这是您在多个教程中遇到的相当标准的设置(我自己也有很多次) 能否将我链接到其中一个教程?以上是关于从单独的上下文访问弹簧上下文的主要内容,如果未能解决你的问题,请参考以下文章