我们使用Spring MVC注释。 我也有一个StartUpServlet。我的要求是在FilterDispatcher servlet初始化之后加载这个servlet。
基本上,我们想要初始化Google Guava缓存并使用表中的数据加载缓存。
我可以有一个静态块并加载数据。但问题是我们进行缓存初始化的类和缓存加载可能是垃圾收集,如果我们从来没有长时间访问它。 因此,虽然将缓存加载类实例引用到servlet中,但它永远不会被垃圾收集。但是,在初始化FrameworkServlet调度程序和依赖注入工作之前,servlet会被加载。
寻求帮助......
先谢谢, Baskar.S
答案 0 :(得分:0)
缓存实际上并不需要在servlet中,最简单的方法是将它放在一个在服务器启动时填充缓存的单例bean中。豆子看起来像这样:
@Component("cacheBean")
public class MyCachedDataService implements InitializingBean {
private MyCache cache;
public void afterPropertiesSet() {
... populate the cache ...
}
public void cacheLookup(String key) {
... lookup the cache ...
}
}
这里最重要的是避免在服务器启动后对缓存进行进一步更改,以避免竞争条件。然后像往常一样使用@Autowired
将bean注入其他bean中。