ошибка инициализации весеннего сеанса

Я пытаюсь реализовать Spring Session, следуя этому руководству Spring Учебное пособие по HttpSession

Но я сталкиваюсь с ошибкой инициализации при запуске приложения.

Исключение в потоке «основной» org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем «springSessionRepositoryFilter», определенным в классе org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration: выражена неудовлетворенная зависимость через аргумент конструктора с индексом 1 типа [javax.servlet.ServletContext]. Аннотации зависимостей: {}; вложенным исключением является org.springframework.beans.factory.NoSuchBeanDefinitionException: для зависимости не найдено подходящего bean-компонента типа [javax.servlet.ServletContext]: ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат autowire для этой зависимости. Аннотации зависимостей: {}

Я могу ошибаться, но похоже, что аннотированная реализация ServletContext отсутствует. Должен ли я добавить какие-либо дополнительные зависимости, чтобы решить эту проблему?


person austin    schedule 15.01.2016    source источник


Ответы (2)


Всем, кто столкнулся с этой проблемой:
я переключился на снапшот версии 1.1.0 Spring Security, и проблема исчезла.
Если вы используете maven, добавьте репозиторий моментальных снимков Spring в pom.
Это руководство помогло< /а>

person austin    schedule 15.01.2016

Хотя вы можете поиграть с версиями модулей Spring и решить эту проблему, вы можете вызвать множество других проблем из-за несовместимых версий Spring. Вместо этого вы можете использовать решение, используя: ServletContextExposure и FactoryBean

Я использовал это в устаревшем проекте, использующем Spring 3 с конфигурацией XML:

 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"/>
person Yoav.H    schedule 01.09.2020