Java Spring ServletContext返回null
被奇怪的问题缠住了。我正在向类(定义为@Service)添加一个ServletContext,它总是返回null。尝试了@Autowired和不使用它 此外,我在应用程序启动时没有收到任何错误。 调用“servletContext.getRealPath(“/WEB-INF/”)时仅为空值 这是一个我尝试使用它的类:Java Spring ServletContext返回null,java,spring,spring-mvc,Java,Spring,Spring Mvc,被奇怪的问题缠住了。我正在向类(定义为@Service)添加一个ServletContext,它总是返回null。尝试了@Autowired和不使用它 此外,我在应用程序启动时没有收到任何错误。 调用“servletContext.getRealPath(“/WEB-INF/”)时仅为空值 这是一个我尝试使用它的类: @Service public class MyFactory implements ServletContextAware { @Autowired Serv
@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/”)
方法您的问题描述令人困惑。您说您添加了ServletContext
,它返回null(@Autowired
或不返回),这听起来像是ServletContext
的值为null,而您的措辞和代码示例似乎表明getRealPath()
返回null
如果servletContext
为null,则servletContext.getRealPath()
将导致NullPointerException
如果servletContext
不为null,则servletContext.getRealPath()
将成功,但可能返回null
引用以下文件:
如果servlet容器无法将给定的虚拟路径转换为实际路径,则此方法返回null
因此,如果
/WEB-INF/
位于未解压缩的.war文件中,则没有实际路径,getRealPath()
将返回null。您当然是让Spring为您实例化类,而不是自己调用new MyFactory()
,对吗?自动布线完成后也会调用someMethod()
,对吗?对不起,你说得对,问题的描述不够清楚。servletContext为空。