Spring 在Java EE应用程序中,在何处存储ConfigurableApplicationContext?
我计划将Spring应用程序移植到JavaEE环境。我只想使用JSF作为表示层(而不是SpringMVC)。我的问题是:在Java EE应用程序中,什么地方是安全的,我可以存储ConfigurableApplicationContext,这样我就不需要重复多次了:Spring 在Java EE应用程序中,在何处存储ConfigurableApplicationContext?,spring,jakarta-ee,Spring,Jakarta Ee,我计划将Spring应用程序移植到JavaEE环境。我只想使用JSF作为表示层(而不是SpringMVC)。我的问题是:在Java EE应用程序中,什么地方是安全的,我可以存储ConfigurableApplicationContext,这样我就不需要重复多次了: ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 将其存储在Web应用程序的
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
将其存储在Web应用程序的应用程序上下文中或者存储在SingletonEJB中是否安全?
谢谢这两个选项都可以:对于应用程序上下文,您需要创建一个ServletContextListener,并在contextInitialized()方法中创建Spring应用程序上下文。对于单例EJB,创建初始化方法并添加@PostConstruct方法。如果您使用的是CDI,那么您可以创建一个简单的生产者来创建ConfigurableApplicationContext的一个应用程序实例。请参见以下示例:
@ApplicationScoped
public class SpringProducer {
@Produces
public ConfigurableApplicationContext create() {
return new ClassPathXmlApplicationContext("applicationContext.xml");
}
public void close(@Disposes final ConfigurableApplicationContext ctx) {
ctx.close();
}
}
有关完整示例,请参见