ThreadLocal를 이용한 로그 추적 (feat. 동시성 이슈)
·
Back-end/Java
요구사항[f8477cfc] OrderController.request()[f8477cfc] |-->OrderService.orderItem()[f8477cfc] | |-->OrderRepository.save()[f8477cfc] | |서비스를 운영하면서 로그를 추적하기 위한 프로그램을 작성한다고 해보자.HTTP 요청의 흐름대로 Controller, Service, Repository에서의 실행시간과 각각의 깊이를 나타내려면 어떻게 해야 할까?가장 단순하게 생각해 보면 파라미터를 통해 넘겨주는 방법을 고려해 볼 수 있다.이를 위해선 Controller에서 요청이 시작되면 해당 요청의 id 값과 깊이를 Service와 Repository에 넘겨주면 된다.해결법파라미터를 통해 HTTP 요청 id값 전달하기위..
[Java] 객체지향 - 다형성(역할과 구현)
·
Back-end/Java
다형성 개념다형성의 특징유연하고 변경에 용이하다.역할과 구현으로 세상을 구분한다.자동차 예시 위의 그림은 다형성을 설명할때 가장 흔하게 등장하는 예시중 하나인 자동차 예시입니다. 자동차역할을 인터페이스라고 한다면 k3, 아반테, 테슬라 모델3는 각각 인터페이스(자동차 역할)의 구현체(자동차)라고 할 수 있습니다.운전자는 차마다 별도의 운전법을 배울 필요 없이 여러종류의 차를 운전할 수 있다. 운전자는 각각의 차량이 아닌 자동차의 역할(운전)에 의존한다.이것이 다형성의 핵심입니다.운전자를 클라이언트라고 하고, 자동차를 서버라고 한다면새로운 자동차(다른 서버)가 나왔다고 해서운전자(클라이언트)가 면허를 다시 따야할 필요(클라이언트 수정)는 없습니다.   공연 예시또 다른 예시인 공연 예시를 살펴보도록 하겠습..