ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • request 스코프와 ObjectProvider
    Spring 2022. 12. 6. 00:06

    request 스코프는 스프링 컨테이너에 등록되어 있는 빈 인스턴스를 있는 그대로 @Autowired 하게 되면 에러가 발생한다. 

    (BeanCreationException)

    왜냐하면 스프링 컨테이너에 있는 빈 인스턴스는 이미 활성화 되어 있는걸 가져오는 방식인데, 빈 인스턴스가 request Http 요청보다 먼저 등록이 되어버리면 Http 요청이 활성화 되어 있지 않은 상태에서 빈 인스턴스를 호출하게 되는 것이므로 에러가 발생한다. 

     

     이를 조금 더 쉽게 설명하자면 Http 요청에는 active와 active 되지 않은 상태로 나눌 수 있다. 우리가 request http 요청을 호출하기 전에는 active 되지 않은 상태일 것이다. 그런데 이 상황에 빈 인스턴스가 미리 들어와 있으니 request scope에서 원치 않는 생명주기에 빈 객체가 호출된 것과 마찬가지가 되는 것이다.

     

     따라서 우리는 request http 요청이 호출되기 전에 빈 객체를 호출하지 않도록 설정해줘야 한다.

     

    순서로 따지자면  ObjectProvider 객체 생성 -> rquest http 호출 -> ObjectProvider 객체.getObject()로 빈 인스턴스 호출

     

    'Spring' 카테고리의 다른 글

    @Autowired  (0) 2023.01.30
    entity와 Dto의 차이  (0) 2022.12.23
    BindingFailure  (0) 2022.05.30
    BindingResult  (0) 2022.05.29
    @Valid, BindingResult  (0) 2022.01.06
Designed by Tistory.