无法在Tomcat项目的测试中连接Java ServlextContext

时间:2016-06-03 00:27:07

标签: java spring tomcat servlets autowired

我遇到的问题是我通过在构造函数中传递它来自动化servlet上下文,就像在下面的代码中一样。不幸的是,由于没有ServlextContext并且Spring失败,它无法在运行测试时自动装配任何东西。

@Autowired
public MyClass(ServletContext context) {
    this.servletContext = context;
} 

我真的不需要ServletContext自动进行测试,只是在运行Tomcat战争的时候,然后在ServletContext上调用方法

我正在运行一个项目使用Spring的Tomcat服务器。

2 个答案:

答案 0 :(得分:0)

由于我使用Spring,我通过实现ServletContextAware并添加此方法来解决此问题。如果没有上下文,则永远不会调用该方法,因此如果没有上下文,servletContext将保持null

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

然后我在运行实际需要servlet上下文的代码部分之前检查if(servletContext==null)

答案 1 :(得分:0)

    @Autowired
    ServletContext context; 

我认为最佳做法是采用上述方法,因为通常, 它是我们通过方法传递的模型类。你不能从方法参数中获取ServletContext,这将无效。

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

您可以为ServletContextAware课程实施controller界面,然后您可以覆盖setServletContext方法来实现此目标。

private ServletContext context;

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