본문 바로가기

공부기록/인터넷 강의

프록시를 사용할때 자주보는 문제

김영한 강의듣고 메모

 

 

프록시를 타도록 의도했지만, 자기 내부 함수를 호출하면 → 해당 함수는 프록시를 거치지않음

자신을 호출하는 경우 → 프록시를 거치지 않음

외부에서 호출할때만 프록시를 거쳐서 실행된다.

이런 문제를 해결하는 방법? → aspectj를 사용하면 이런 문제가 발생하지 않음 → 코드에 직접 박히기 떄문( aspectj는 실제로 코드 주입)

  1. 자기 자신을 주입하는 것? → setter 주입(생성/주입 단계가 분리되어 있어서, setter 주입을 하면좋다...)
  2. → 지연 조회 → application context로 자신을 호출함, 또는 ObjectProvider
  3. 구조 변경 → (가장 권장됨) 호출되는 클래스 분리(내부함수호출을 하지않음) ( 다양한 방법이 있을 수 있음) client →1 → 2 구조에서 client →1, client →2 로 바꿀수도 있음

프록시 기술들의 한계

jdk 프록시 - 인터페이스 필수, 구체클래스의 경우 사용할 수 없다.

cglib 프록시 - 구체 클래스 기반, 기본생성자 필수, 생성자 2번 호출 문제, final 키워드 클래스, 메서드 사용불가(final 키워드가 있으면, 상속이 안되므로)

 

스프링의 대안 - cglib을 기본으로 패키지, 기본 생성자 필수 문제 해결, 생성자 2번 호출문제(objenesis)라는 라이브러리로 해결

'공부기록 > 인터넷 강의' 카테고리의 다른 글

mvc2편 및 고급편  (0) 2022.02.20
프록시 데코레이터  (0) 2022.02.10
템플릿 메서드 패턴과 전략, 콜백  (0) 2022.02.06
RestFul  (0) 2021.11.20
생활코딩 OAuth 정리  (0) 2021.10.26