在Java EE应用程序中存储ConfigurableApplicationContext的位置?

时间:2014-07-30 12:51:27

标签: spring java-ee

我打算将Spring应用程序移植到Java EE环境中。我只想使用JSF作为表示层(而不是Spring MVC)。我的问题是:Java EE应用程序中的一个安全位置,我可以存储 ConfigurableApplicationContext ,这样我就不需要多次重复:

ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

将它存储在Web应用程序的应用程序上下文中,还是存储在SingletonEJB中是否安全? 感谢

2 个答案:

答案 0 :(得分:1)

两个选项都没问题:对于应用程序上下文,您需要创建一个ServletContextListener,并在contextInitialized()方法中创建Spring应用程序上下文。对于Singleton EJB,创建初始化方法并添加@PostConstruct方法。

答案 1 :(得分:1)

如果您正在使用CDI,那么您可以创建一个简单的生产者来创建ConfigurableApplicationContext的一个应用程序实例。请参阅以下示例:

@ApplicationScoped
public class SpringProducer {
     @Produces
        public ConfigurableApplicationContext create() {
            return new ClassPathXmlApplicationContext("applicationContext.xml");
        }
        public void close(@Disposes final ConfigurableApplicationContext ctx) {
            ctx.close();
        }
}

有关完整示例,请参阅此Spring tutorial on WildFly