build my life

스코프와 프록시 본문

Spring

스코프와 프록시

dalovee 2023. 7. 14. 16:44
728x90

프록시 방식 사용해서 코드를 조금 더 줄여보자

 

1. roxyMode => TARGET_CLASS 설정

 

2. 오류 났던 부분 원복

 

3. 오류나지 않고 서버가 시작된다.

 

이게 어떻게 동작하는거지?

바이트 코드를 조작하는 라이브러리를 사용해서 MyLogger를 상속받은 가짜 프록시 객체를 생성

그리고 스프링 컨테이너에 진짜 대신 가짜 프록시 객체를 등록

getBean("myLogger", MyLogger.class)로 조회해도 프록시 객체가 조회되는 것을 확인

=> 의존 관계 주입도 가짜 프록시 객체가 주입됨

 

가짜 프록시 객체는 요청이 오면 그제서야 진짜 빈을 요청하는 위임 로직이 들어있음!

이런 가짜 프록시 객체는 원본 클래스를 상속 받아서 만들어졌기 때문에 진짜와 동일하게 사용할 수 있음! 

 

꼭 기억하자

1. Provider를 사용하든 프록시를 사용하든 진짜 객체 조회를 꼭 필요한 시점까지 지연처리 한다는 점이 중요!!

2. 단지 애노테이션 설정변경만으로 원본 객체를 프록시 객체로 대체 가능 => 다형성 DI 컨테이너가 가진 큰 강점

- 클라이언트 코드를 전혀 고치지 않는다. 라는 것이 가장 큰 장점임.

- 메서드 마다 몇초씩 걸렸는지 알고 싶을 때 AOP, 프록시 기능.. 이런걸 사용해서 코드를 고치지 않고 해결 할 수 있음

3. 꼭 웹 스코프가 아니어도프록시 사용할 수 있음

 

4. 싱글톤이 아니기 때문에 무분별하게 사용하지 말고... 주의해서 사용해야 한다. 꼭 필요한 곳만 사용하자!

728x90

'Spring' 카테고리의 다른 글

웹 스코프  (0) 2023.07.14
[Spring] 의존 관계 주입 방법  (0) 2023.06.14
[Spring] 스프링 컨테이너  (0) 2023.06.14
[Spring] AppConfig를 통한 의존관계 주입  (0) 2023.06.02
[Spring Boot] Spring Initializr  (0) 2023.04.07