Добавление области запроса в Spring приводит к java.lang.IllegalStateException: Нет области, зарегистрированной для имени области 'запрос' - PullRequest
0 голосов
/ 05 июня 2018

У меня есть проблема, из-за которой я не могу весной добавить компоненты запроса с Embedded Tomcat 9.0.5

, который запускает приложение

public static void main(final String[] args) {
srv = new Tomcat();
    srv.getConnector().setPort(port);
    ctx = srv.addContext("", new File("").getAbsolutePath());
    srv.addServlet(ctx, "testServlet",  new TestServlet());
    ctx.addServletMappingDecoded("/testServlet/*", "testServlet");

    ctx.addApplicationListener(RequestContextListener.class.getName());
    try {
        srv.start();
    } catch (LifecycleException e) {
        e.printStackTrace();
    }
}

services.xml

<bean id="service" class="xxxx.xx.ServiceImpl" scope="request">
</bean>

Когда я запускаю apache при весенней загрузке, я получаю следующее сообщение об ошибке:

|main|noSessionId|noCorrelationId|ERROR|NULL|null|java.lang.IllegalStateException: No Scope registered for scope name 'request'
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1342)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1249)

1 Ответ

0 голосов
/ 05 июня 2018

Запрос Spring, сеанс, глобальный сеанс и область приложения предназначены для веб-приложения Spring.Область запроса Spring связана с HTTP-запросом.Весенняя сессия связана с HTTP-сессией.Область применения Spring связана с ServletContext.Глобальная область сеанса Spring связана с приложением портлета Spring.Это означает, что мы не можем использовать эти области в автономном приложении.

В Spring Doc упоминается следующее: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes

Области запроса, сеанса, приложения и веб-сокета доступны только при использовании реализации Spring ApplicationContext с поддержкой веб-интерфейса (такой как XmlWebApplicationContext).Если вы используете эти области с обычными контейнерами Spring IoC, такими как ClassPathXmlApplicationContext, будет выдано исключение IllegalStateException с жалобой на неизвестную область действия компонента.

...