春季会话初始化错误

时间:2016-01-15 00:20:15

标签: java spring spring-security spring-session

我正在尝试按照本教程实现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的实现,我应该添加任何其他依赖来解决这个问题吗?

2 个答案:

答案 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"/>