我打算将Spring应用程序移植到Java EE环境中。我只想使用JSF作为表示层(而不是Spring MVC)。我的问题是:Java EE应用程序中的一个安全位置,我可以存储 ConfigurableApplicationContext ,这样我就不需要多次重复:
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
将它存储在Web应用程序的应用程序上下文中,还是存储在SingletonEJB中是否安全? 感谢
答案 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