저는 Spring Boot 서비스를 작성 중이며 RequestContext인증 된 사용자 및 요청 ID와 같은 것을 저장할 수있는 컨트롤러 에 사용할 수있는 일부 형식을 포함하고 싶었습니다 . 그러나 여러 접근 방식이 있습니다.
@RequestScopeBean 사용- 사용하다
ServletRequest.setAttribute - Spring 사용
RequestContextHolder
이러한 접근 방식 간의 장단점은 무엇입니까?
저는 Spring Boot 서비스를 작성 중이며 RequestContext인증 된 사용자 및 요청 ID와 같은 것을 저장할 수있는 컨트롤러 에 사용할 수있는 일부 형식을 포함하고 싶었습니다 . 그러나 여러 접근 방식이 있습니다.
@RequestScopeBean 사용ServletRequest.setAttributeRequestContextHolder이러한 접근 방식 간의 장단점은 무엇입니까?
대체로 말하자면, RequestScopeSpring의 마술적인 방법입니다. 내부적 RequestContextHolder으로 ServletRequest.setAttribute. 다르게 말하면 Spring 방식 은 IMHO RequestScope입니다. RequestContextHolderSpring 어노테이션의 마법을 제한하려는 경우 의미가 있습니다. Finaly ServletRequest.setAttribute는 여전히 낮은 수준이며 코드가 Spring이 아닌 응용 프로그램과 호환되도록하려면 주로 사용해야합니다.
또한 처음 두 가지 방법에 대해 Spring은 스레드 범위 객체를 사용하여 요청 컨텍스트에 대한 참조를 저장하므로 프로그래머가 Request 객체를 명시 적으로 수신하지 않는 메서드에서도 Bean에 액세스 할 수 있습니다.