我正在尝试按照本教程实现Spring Session Spring HttpSession Tutorial
但是当我启动应用程序时,我遇到了初始化错误。
线程“main”中的异常org.springframework.beans.factory.UnsatisfiedDependencyException:在类org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration中定义的名称为'springSessionRepositoryFilter'的bean创建错误:通过带有[javax.servlet.ServletContext]类型的索引1的构造函数参数表示的不满意的依赖性::没有为依赖项找到类型为[javax.servlet.ServletContext]的限定bean:期望至少有1个bean符合此依赖关系的autowire候选者。依赖注释:{};嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为[javax.servlet.ServletContext]的限定bean:期望至少有一个bean符合此依赖项的autowire候选者。依赖注释:{}
我可能错了,但看起来没有带注释的ServletContext的实现,我应该添加任何其他依赖来解决这个问题吗?
答案 0 :(得分:2)
任何可能遇到此问题的人:
我切换到春季安全的快照版本1.1.0,问题就消失了
如果使用maven在pom中添加spring snapshot repository。
This tutorial helped
答案 1 :(得分:0)
尽管您可以使用弹簧模块版本并解决它,但是由于弹簧版本不兼容,您可能会引起无数其他问题。 相反,您可以使用以下解决方案:ServletContextExposure和FactoryBean
我在使用带有XML配置的spring 3的旧项目中使用了它:
public class ServletContextExposure implements ServletContextAware, FactoryBean<ServletContext> {
private ServletContext servletContext;
@Override
public ServletContext getObject() {
return this.servletContext;
}
@Override
public Class<?> getObjectType() {
return ServletContext.class;
}
@Override
public boolean isSingleton() {
return true;
}
@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
}
如果您使用的是XML配置,只需将其添加到您的spring XML中:
<bean id= "servletContextExposure" class="com.borderfree.boot.ServletContextExposure"/>