Spring boot - бин SCOPE_REQUEST преобразуется в синглтон, если бин инициализируется вручную - PullRequest
0 голосов
/ 29 января 2019

Я сталкиваюсь со странной ситуацией, когда бин SCOPE_REQUEST становится одноэлементным при его ручной инициализации.Ниже приведено подробное описание:

A Область действия запроса:

@Component
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class ServiceHeader {
    private String correlationId;
    private String requestId;
    private String requestedBy;
    //getters & setters
}

Автоматически подключен этот компонент к классу обслуживания

@Service
public class ExportService {
    @Autowired
    private ServiceHeader serviceHeader;

    //Regular service method that access to variables of the request
    public void exportPdf(){
        logger.info(serviceHeader.getRequestBy());
    }

    //The method that cause issue
    public void nastyExport(){
        serviceHeader = new ServiceHeader();
        serviceHeader.getRequestBy("Admin");
        logger.info(serviceHeader.getRequestBy());
    }
}


/*There is also an Interceptor class that 
get all request headers and assign to the ServiceHeader bean*/

Для обычного запроса, что метод export ()переменные в компоненте ServiceHeader правильно получаются из запроса.

Однако, когда вызывается метод nastyExport (), ServiceHeader инициализируется службой вручную.С этого момента, если метод export () вызывается снова, serviceHeader.getRequestBy () всегда возвращает последнее значение, установленное в методе nastyExport ().

Может кто-нибудь посоветовать, почему эта проблема возникает?Я не вижу нигде упоминания о том, что bean-компонент автоматически конвертируется из области действия Request в Singleton, когда он инициализируется вручную.

Есть ли способ предотвратить инициализацию вручную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...