3

我在 web.xml 文件中配置了 spring 根 web 上下文。我和这个父母也有几个孩子的背景。所有子上下文都是手动创建的:

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"ApplicationContext/beans.xml"}, rootApplicationContext);

我想在这个子上下文中管理会话和请求范围内的 bean。

如何正确创建和配置子上下文以使它们能够处理 Web 应用程序范围?

现在我在尝试自动装配会话范围 bean 时出现以下错误(显然):

java.lang.IllegalStateException: No Scope registered for scope 'session'
4

1 回答 1

4

你遇到的问题是

session-scope :将单个 bean 定义限定为 HTTP 会话的生命周期。仅在Web 感知 Spring ApplicationContext的上下文中有效。

而且你ClassPathXmlApplicationContext的不是网络感知的

我建议你去GenericWebApplicationContext而不是ClassPathXmlApplicationContext

你可以尝试这样的事情:

GenericWebApplicationContext context = new GenericWebApplicationContext(servletContext);
context.setParent(rootApplicationContext);
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(context);
xmlReader.loadBeanDefinitions(new ClassPathResource("ApplicationContext/beans.xml"));
context.refresh();

Spring javadoc 是有用的来源:

于 2013-01-28T12:07:55.907 回答