我们可以有两个ServletContext的spring容器吗?我只是问这个问题,因为我们在春天有Application
范围,它的范围是每个ServletContext的bean。那么我们可以有两个这样的bean实例吗?
每个应用程序不能有多个ServletContext(根据JavaEE定义)。
解决方案A)将对象的作用域更改为prototype
,并招募一些bean的实例。
解决方案B)(更好)为您的bean使用@Qualifier
,以便您可以为同一个类创建两个不同的bean。如果使用基于xml的配置,请为bean指定不同的名称。如果您使用基于类的配置,请使用@Bean(name = "name1")
。将@Qualifier("name1")
和@Autowired
放在一起检索所需的bean。
如果您谈论的是特定于Servlet的Spring应用程序上下文,而不是来自EE的ServletContext,那么是的,它们可能有多个实例,因为您可以为每个Servlet定义应用程序上下文(然后它们是根应用程序上下文的子上下文)。如果在每个servlet上下文中定义了应用程序作用域bean,则每个servlet上下文中有一个实例,即应用程序中有多个实例。