我尝试使用
从Web应用程序中的java类加载applicationContext.xml ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
和
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
我的问题是如何从java类加载applicationContext.xml。 applicationContext.xml是WEB-INF。这可能吗?
答案 0 :(得分:6)
您可以使用ContextLoaderListener
文件中的web.xml
:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
然后您可以使用WebApplicationContext
加载上下文:
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
希望这有帮助。
答案 1 :(得分:2)
当您要加载将充当上下文根的特定上下文时,将使用ContextLoaderListener
。如果您因任何原因要加载其他上下文,可以定义自己的ServletContextListener
,创建ApplicationContext
个实例,并将它们放在ServletContext
属性中,以便它们可供网络使用申请
public class AdditionalContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
// destroy those contexts maybe
}
@Override
public void contextInitialized(ServletContextEvent sce) {
ApplicationContext context = ...; // get your context
sce.getServletContext().setAttribute("someContextIdentifier", context);
}
}