2024-08-05 학습일기와 여담
·
개발 기록
스프링빈 후처리기자동 프록시 생성기(AnnotationAwareAspectAutoProxyCreator)포인트컷의 사용프록시 적용 여부 판단 생성 단계어드바이스 적용 여부 판단 사용 단계@Aspect횡단 관심사 쿠버네티스쿠버네티스 소개왜 쿠버네티스인가?VM vs ContainerKubernetes Overview 알고리즘미로 탐색구호물자타임머신  당분간 포트폴리오 작성과 알고리즘에 좀 더 시간을 투자할 것 같다.
2024-08-04 학습일기
·
개발 기록
포트폴리오 및 Postman 수정
2024-08-03 학습일기
·
개발 기록
알고리즘운동파티게임 맵 최단거리섬 연결하기최단거리
2024-08-02 학습일기
·
개발 기록
스프링 스프링이 지원하는 프록시 이전문제점인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용하려면 어떻게 해야할까?두 기술을 함께 사용할 때 부가 기능을 제공하기 위해 JDK 동적 프록시가 제공하는 InvocationHandler 와 CGLIB가 제공하는 MethodInterceptor 를 각각 중복으로 만들어서 관리해야 할까?특정 조건에 맞을 때 프록시 로직을 적용하는 기능도 공통으로 제공되었으면? Q: 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용하려면 어떻게 해야할까?스프링은 유사한 구체적인 기술들이 있을 때, 그것들을 통합해서 일관성 있게 접근할 수 있고, 더욱 편리하게 사용할 수 있는 추상화된 기술..
2024-08-01 학습일기
·
개발 기록
스프링 노션으로 따로 정리는 해두었지만, 그 내용이 너무 길어서 간단하게 정리한다.어제 학습했을 때 프록시 클래스를 만들면서 원본 코드의 아무런 수정없이 로그 추적이 가능했다.하지만, 이는 프록시 클래스를 모든 경우에 만들어줘야 한다는 문제가 있었다. 따라서, 이를 해결해야만 한다. 먼저, 자바에서 제공해주는 리플렉션 기술을 사용한 경우에는 Class로부터 메타데이터를 받아와 Method를 추상화하여 사용할 수 있으므로, 동적 프록시 클래스 생성이 가능했다.하지만, 이는 컴파일시 오류를 잡지 못하고 런타임에서만 오류를 잡을 수 있는 문제가 있다. 따라서, 이것은 개발자의 발전을 역행하는 것이므로, 리플렉션은 보통 사용하지 않는다.  그래서, 다른 대안으로 JDK 동적 프록시를 활용한 방법인 Invocat..
2024-07-31 학습일기
·
개발 기록
스프링 프록시 패턴 프록시의 주요 기능은 접근 제어이다.캐시도 접근 제어의 한 종류라고 볼 수 있다.이미 한번 조회한걸 빠르게 조회하기 위함이미 개발된 로직을 전혀 수정하지 않고 프록시 객체를 통해 캐시를 적용하려면 어떻게 해야할까 Subject라는 인터페이스를 만들고 이걸 실제로 구현한 RealSubject라는 구현체를 만든다.이때 RealSubject에서 1초 걸린다고 가정하면세 번 호출시 각각 1초씩 걸리므로 3초가 걸린다.하지만, 만약 조회하는 내용이 같다면 이건 손해가 될 수 있다.따라서, 프록시를 통해 캐시 형태로 사용하면 더 빨리 조회할 수 있다.그렇기 위해 CacheProxy라는 것을 하나 만들고 필드로 RealSubject를 주입받는다.또한, Cache 값을 저장하기 위한 필드를 하나더 ..