2015-10-14 45 views

回答

0

每个应用程序不能有多个ServletContext(由JavaEE定义)。

解决方案A)将您的对象的范围更改为prototype并招聘您的bean的一些实例。

解决方案B)(更好)为您的bean使用@Qualifier,这样您就可以为同一个类创建两个不同的bean。如果您使用基于xml的配置,请为您的bean指定不同的名称。如果您使用基于类的配置,请使用@Bean(name = "name1")。将@Qualifier("name1")@Autowired放在一起检索所需的bean。

+0

我想OP是在谈论Spring的servlet上下文,而不是来自EE的ServletContext(这是另一回事)。 – dunni

+0

Spring中没有像'ServletContext'这样的东西。它可能是你所指的'ApplicationContext'。 – bekce

+0

是的,正如你所看到的,我写了“servlet context”而不是“ServletContext”。也许我可以写“servlet ApplicationContext”来说清楚。 – dunni

0

如果你正在谈论一个特定于Servlet的Spring应用程序上下文,而不是来自EE的ServletContext,那么是的,它可能有多个实例,因为你可以为每个servlet定义一个应用程序上下文根应用程序上下文的子上下文)。如果您已在每个servlet上下文中定义了应用程序范围的bean,则每个servlet上下文都有一个实例,即应用程序中有多个实例。

相关问题