Scope ProxyMode
Scope ProxyMode
Scope ProxyMode
Singleton
빈은 스프링이 시작될 때 생성됨- 그러나
prototype
혹은request
등의 스코프를 가진 빈들은 요청이 와야 생성됨Singleton
빈 내부에서 이런 빈을 사용할 때 문제가 생김
- 이 경우에는
Provider
를 이용할 수도 있지만, 다음과 같은 어노테이션을 붙여서Proxy
를 활용 가능@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
- 인터페이스인 경우
TARGET_CLASS
대신INTERFACES
로 치환 - 이 경우 가짜 프록시 빈을 미리 주입해 두고, 실제 요청이 오면 진짜 빈을 요청하게 됨
- 클라이언트는 싱글톤 빈을 사용하듯이 다른 scope를 사용 가능
- 그렇다 해도 무분별한 사용은 금지
- 실제 요청까지 객체 조회를 지연한다는 점이 핵심 아이디어
References
- 스프링 핵심 원리 기본편 - 김영한 (https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard)