Java Spring ServletContext返回null

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)添加一个ServletContext,它总是返回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/”)
方法

您的问题描述令人困惑。您说您添加了
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为空。