在启动时从数据库初始化Spring Web应用程序
问题内容:
Spring 3.1 + Tomcat
我在这里有一个设计问题:
在数据库中已经指定了一组类别。从可以在整个Web应用程序中使用的意义上讲,这些类别可以视为全局类别。我想做的是在服务器启动时阅读这些类别,并使用Java填充某种类型的集合。唯一需要在启动时从数据库中读取一次,请考虑将其视为初始化类型。
我可以想到两个选择:
1)我应该使用一个非延迟初始化的bean吗?
要么
2)修改web.xml?
我不太确定首选的方法是什么,有关如何执行推荐操作的任何说明将不胜感激。谢谢!
问题答案:
您提供的选项是最常用的:
-
使用带有注释方法的单例非惰性bean
@PostConstruct
(但请注意,这@Transactional
可能不起作用)。这样的初始化例程可以具有多个bean。 -
扩展
org.springframework.web.context.ContextLoaderListener
并在中使用它web.xml
。我发现此解决方案不太优雅,并且还会导致不良的编程风格(扩展super
以增强基类的调用)