Java

    [Spring Cloud] FeignClient Logging 방법 정리

    Feign Client 를 사용하던 중 구현해야 할 사항 중 하나가 모든 요청, 응답에 대한 로깅이었다. 그러면서 알게된 Feign Client Logging 방법 정리 간단하게 interceptor를 사용할까! 하다가 feign의 Logger를 커스터마이징 할 수 있길래 오! 더 간단하지 않을까 해서 사용해보았다. %s %s HTTP/1.1 (%s-byte body) ", request.httpMethod().name(), request.url(), bodyLength); } } @Override protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) thr..

    [JAVA] 리플렉션과 제네릭은 어떻게 형변환을 자유롭게 해줄까?

    제네릭 제네릭은 타입 세이프를 보장해주는 컴파일 타임 메커니즘, 리플렉션은 런타임 메커니즘이다. 즉, 코드짤땐 type T가 뭔진 모르겠지만 타입 세이프는 보장해주었으면 좋겠어~라고 하면 컴파일러는 type T를 Object로 변환해주어 런타임에 어떤 객체가 와도 동작하게 해준다. 이러한 컴파일 타임엔 타입 세이프를 검사하지만 런타임엔 타입을 제거하는 과정을 거치게 되는데, 이걸 자바에선 type erasure라고 부른다. Type Erasure 동작 과정 generic type들을 모두 Object로 바꾼다. 타입 캐스팅이 필요한 경우 타입을 주입하기도 한다. 다형성을 위해 bridge method들을 생성한다. 리플렉션 이와는 달리 리플렉션은 객체의 클래스들과 인터페이스를 나타내는 Class 인스턴스..