我希望在应用程序启动时加载一些数据并将它们存储在全局上下文中,以便我的所有配置和控制器类都可以从上下文中读取这些数据。
传统上,我使用ServletContextListener
加载contextInitialized
方法中的数据并将其存储在ServletContext
中。例如,
public void contextInitialized(ServletContextEvent event) {
// load data
event.getServletContext()..setAttribute(...)
}
在我的控制器中,我只是注入ServletContext
或使我的控制器实现ServletContextAware
。
实现这一目标的Spring Boot方式是什么?我可以考虑以下选项,但不完全确定如何将这些用于我的用例。
@PostConstruct
(关于哪个bean?)@Configuration
(加载数据并以@Bean
返回?)ApplicationListener
或@EventListener
的ContextRefreshedEvent
或ApplicationReadyEvent
(如何将数据公开给我的控制器?我还想要@Configuration
上的数据但是,这些事件发生在已经创建@Configuration
中的bean之后)