SpringBoot에서 서비스를 노출했으며 RequestContextHolder에 몇 가지 속성을 저장하고 있습니다. API 중 하나에서 비동기 적으로 일부 활동을 수행해야합니다. 애플리케이션은 요청을 수락하고 활동을 수행하기위한 새 스레드를 생성하고 즉시 응답을 반환합니다. RequestContextHolder 개체도 스레드에 전달합니다. 스레드는 RequestContextHolder에서 속성을 가져 오려고 시도하고 응답이 전송 된 후 null 인 것처럼 보입니다. 스레드가 실행을 완료 한 후 응답을 반환하면 스레드에서 값을 사용할 수 있습니다. RequestContextHolder가 HTTPRequest에 연결되어 있고 응답이 반환되면 손실된다고 가정합니다. 내 가정이 맞습니까? 그렇다면이 시나리오를 어떻게 처리 할 수 있습니까?
org.springframework.web.context.request.RequestContextHolder
Spring Boot Application에서 RequestContextFilter는 요청을 RequestContextHolder로 설정하여 스레드 로컬 변수로 저장하고 컨트롤러가 반환 한 후 정리합니다. RequestContextHolder를 처리 중에 내용이 변경 될 수 있으므로 다른 스레드의 인수로 사용하는 것은 올바른 방법이 아닙니다.
모든 속성 세트를 포함하고 그 아래에 ThreadLocal이없는 일반 객체 인 RequestContextHolder.getRequestAttributes ()에 의해 새로운 동시 작업을 시작하기 전에 실제 요청을 사용하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다