Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在Java EE应用程序中,在何处存储ConfigurableApplicationContext?_Spring_Jakarta Ee - Fatal编程技术网

Spring 在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应用程序的

我计划将Spring应用程序移植到JavaEE环境。我只想使用JSF作为表示层(而不是SpringMVC)。我的问题是:在Java EE应用程序中,什么地方是安全的,我可以存储ConfigurableApplicationContext,这样我就不需要重复多次了:

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();
        }
}
有关完整示例,请参见