Spring ServletContext返回null

时间:2016-04-16 04:42:05

标签: java spring spring-mvc

坚持奇怪的概率。我将ServletContext添加到我的类(定义为@Service),它总是返回null。试过@Autowired和没有它。

此外,我在应用启动时没有收到任何错误。 我调用' servletContext.getRealPath(" / WEB-INF /")'

时只有空值

这是一个我尝试使用它的课程:

@Service
public class MyFactory  implements ServletContextAware {

    @Autowired
    ServletContext servletContext;

    public void setServletContext(ServletContext servletContext) {
        this.servletContext = servletContext;
    }

    private someMethod(){
       servletContext.getRealPath("/WEB-INF/"); //this return null
    }

}

P.S servletContext本身为空,而不是.getRealPath("/WEB-INF/")方法

1 个答案:

答案 0 :(得分:1)

您的问题描述令人困惑。你说你添加resources :users do resources :posts do resources :corrections end end 返回null(ServletContext或不是),当你的措辞和代码使它听起来像@Autowired的值为null示例否则似乎表明servletContext返回null。

如果getRealPath()为空,则servletContext将导致servletContext.getRealPath()

如果NullPointerException不为空,则servletContext将成功,但可能将返回null。

引用getRealPath()的javadoc:

  

如果servlet容器无法将给定的虚拟路径转换为真实的路径,则此方法返回servletContext.getRealPath()

因此,如果null位于尚未解压缩的.war文件中,则没有真正的路径,/WEB-INF/将返回null。