HttpServletRequest를 임의의 Spring 컴포넌트에 자동 연결하는 것은 어디에 문서화되어 있습니까?

M. 저스틴

오늘 저는 HttpServletRequest임의의 싱글 톤 Spring Bean으로 자동 연결 하는 것이 가능하다는 것을 발견했습니다 .

@Component
public class MyComponent {
    private final HttpServletRequest servletRequest;

    public MyComponent(HttpServletRequest servletRequest) {
        this.servletRequest = servletRequest;
    }
}

나는 권위있는 소스를 찾지 못했지만 온라인 검색에서 알 수 있듯이 이것은 실제로 HttpServletRequest실행중인 스레드 의 실제 위임하는 래퍼입니다 .

예를 들어 2012 년 의이 블로그 게시물 에는 다음과 같은 내용이 있습니다.

따라서이 서비스에 여러 요청이 올 때이 서비스 객체에 삽입 된 사용자 요청에 해당하는 올바른 httpServletRequest는 어떻게됩니까? 대답은 실제 HttpServletRequest가 실제로 주입되지 않고 프록시 만 주입된다는 것입니다. 프록시는 내부적으로 RequestContextHolder에 대한 참조 이며 어떤 시점에서 HttpServletRequest를 threadlocal 변수에 바인딩합니다 .

이것이 핵심 Spring 기능인지, Spring MVC의 기능인지, 아니면 Spring Boot에서 제공하는 것인지는 확실하지 않습니다.

나는 이것이 작동하고, 지원되는 기능이며, 작동 방식을 설명하는 권위있는 소스 (예 : Spring 문서, Spring의 내부 또는 Spring 릴리스 노트에서)를 찾지 못했습니다. 나는 그것이 거기에 있다고 생각하지만 그것을 찾는 운이 없습니다. 이와 같은 기능을 사용하려면이 컨텍스트를 선호하여 언제, 어떻게 사용하는 것이 가장 좋으며 언제 피해야하는지 추론 할 수 있습니다.

이 기능은 어디에 문서화되어 있습니까?

참고 : 이것은 Inject HttpServletRequest into Controller 와 유사한 질문 입니다. 그러나 이는이 접근 방식의 함정과 작동 방식에 대한 질문이며 문서화되거나 다른 방식으로 지정된 위치 또는 방법을 다루지 않습니다.

Amseager

의 프록시 자동 연결 가능성은 HttpServletRequestSpring MVC의 일부이며 슬프게도 제대로 문서화되지 않았습니다.

이에 대해 찾을 수있는 가장 좋은 방법은의 일부 릴리스 노트에서 찾을 수 있습니다 spring-web:3.0.0. 예를 들어, 한 번 봐 걸릴 3.0.0.M4의 릴리스 노트 특히에서 이 문제 위르겐 Hoeller (문자열의 주요 개발자 중 하나)가이 버전 이후 어떻게 작동하는지에 대해 이야기합니다.

또한 소스 ( WebApplicationContextUtils , RequestContextHolder )를 자유롭게 확인하세요 . 잘 문서화되어 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관