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

Unable to wire Java ServlextContext in tests for Tomcat project

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

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

我真的不需要 ServletContext 自动连接进行测试,仅当 Tomcat war 是 运行 时我才调用 [=] 上的方法14=]

我正在 运行 宁 Tomcat 服务器项目使用 Spring。

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

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

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

    @Autowired
    ServletContext context; 

我认为最好的做法是采用上述方法,因为通常, 它是我们通过 methods.and 传递的模型 class 您无法从方法参数中获取 ServletContext 这将不起作用。

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

你可以实现 ServletContextAware 接口到你的 controller class 然后你可以覆盖 setServletContext 方法来实现这个。

private ServletContext context;

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