我遇到的问题是我通过在构造函数中传递它来自动化servlet上下文,就像在下面的代码中一样。不幸的是,由于没有ServlextContext
并且Spring失败,它无法在运行测试时自动装配任何东西。
@Autowired
public MyClass(ServletContext context) {
this.servletContext = context;
}
我真的不需要ServletContext
自动进行测试,只是在运行Tomcat战争的时候,然后在ServletContext
上调用方法
我正在运行一个项目使用Spring的Tomcat服务器。
答案 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;
}