Spring Web应用程序有两个ServletContext

时间:2015-10-14 05:41:10

标签: spring scope servlet-container

我们可以有一个带有两个ServletContext的spring容器吗?我只是问这个原因我们在spring中有Application范围,它根据ServletContext来定义bean。那么我们可以有两个这样的bean实例吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如果您正在讨论Servlet特定的Spring应用程序上下文,而不是来自EE的ServletContext,那么可以有多个实例,因为您可以为每个servlet定义一个应用程序上下文(然后是子项)根应用程序上下文的上下文)。如果已在每个servlet上下文中定义了应用程序作用域bean,则每个servlet上下文都有一个实例,即应用程序中有多个实例。