初始化spring上下文后加载webservlet

时间:2014-04-12 03:42:04

标签: spring-mvc servlets

我们使用Spring MVC注释。 我也有一个StartUpServlet。我的要求是在FilterDispatcher servlet初始化之后加载这个servlet。

基本上,我们想要初始化Google Guava缓存并使用表中的数据加载缓存。

我可以有一个静态块并加载数据。但问题是我们进行缓存初始化的类和缓存加载可能是垃圾收集,如果我们从来没有长时间访问它。 因此,虽然将缓存加载类实例引用到servlet中,但它永远不会被垃圾收集。但是,在初始化FrameworkServlet调度程序和依赖注入工作之前,servlet会被加载。

寻求帮助......

先谢谢, Baskar.S

1 个答案:

答案 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中。