标签: java static initialization jersey
我正在使用Jersey创建一个REST服务。应该在第一个请求到达之前加载一些资源(比如一些全局映射,文件)(因为加载这些资源需要20秒)。所以我创建了一些静态字段(属性)来保存这些资源,因为我相信它们应该在我启动这个REST服务时初始化。
但是,我发现了一个奇怪的问题,即只有在我发送第一个请求时才会加载静态资源。因此,对于第一个请求,获取响应总是需要20多秒,而后来的请求要快得多(因为资源已加载)。
有人能解释一下为什么Java在任何请求之前没有初始化这些静态字段的原因吗?
答案 0 :(得分:1)
在Java中,类在第一次加载时被初始化。这是导致类加载的第一个请求。
也许this会有所帮助。