Spring Bean 作用域在 Web 应用程序上下文层次结构中



>我在web.xml文件中配置了弹簧根Web上下文。我也有几个与这个父的子上下文。所有子上下文都是手动创建的:

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

我想在此子上下文中管理会话和请求作用域的 bean。

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

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

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

你遇到的问题是

会话范围:将单个 Bean 定义的范围限定为 HTTP 会话的生命周期。仅在 Web 感知的 Spring 应用程序上下文中有效。

而且您的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 是有用的源代码:

  • 泛型应用程序上下文

最新更新