전체 글(36)
-
99클럽 9일차 TIL: Bean 관련 에러
#1. 오늘의 학습 키워드 자바스프링부트에서의 아래 오류 해결 과정: Description: Parameter 1 of constructor in ~~ required a bean of type 'xx' that could not be found. Action: Consider defining a bean of type 'xx' in your configuration. Loki 서버로 API 호출하는 Util 클래스를 만들고 배포하였을 때, 발생된 오류. 컴파일 타임 및 기본 로컬 Profile 환경에서는 검출이 안 된 오류. 오류의 의미는 LokiUtil 클래스가 bean 으로 등록되지 않았다는 것이다. LokiUtil을 다른 곳에서 객체를 선언하고 사용하고 있었던 상황 그런데 사실 LokiUtil 클..
2024.04.12 -
99클럽 8일차 TIL: SpringBoot - Profile
#1. 오늘의 학습 키워드 자바스프링부트에서 같은 소스 코드로 여러 다른 환경에서 실행시키려 할 때, 각 환경에 맞게 환경변수를 주입하고 싶으면 어떻게 해야할까? - Profile Loki 서버로 API 호출하는 Util 클래스를 만들고 배포하였을 때, Profile 과 연관 된 오류가 있었다. Bean 등록과 @Profile 어노테이션 관련된 오류였다. 컴파일 타임 및 기본 환경에서는 검출이 안 된 오류. 해당 오류와 해결 과정은 따로 상세히 다뤄보겠다. 과정에서 Profile 과 관련된 오류인 것을 깨닫고 다시 Profile에 대한 공부를 하였고, 다른 Profile로 로컬에서 실행을 해보았다. #2. 공부한 내용 Profile 환경에 따라 개발자가 의도한 설정파일을 소스코드가 바라보도록 도와주는 것..
2024.04.11 -
99클럽 7일차 TIL: Collectors.toList() vs. toList()
#1. 오늘의 학습 키워드 자바스프링에서의 Stream 을 사용해 filter, map 등을 쓴 뒤 stream을 다시 리스트로 만들어서 리턴하고 싶을 때, 사용 가능한 두 가지 메서드 중 어떤 거를 선택해야 될까? 자바 스프링으로 개발을 하다보면, 리스트에 대해서 map, filter 등 stream 메서드를 적용해야되는 경우가 많다. 그런데 그 직후 intellij 에서 제공해주는 메서드가 두가지가 있는데, 이를 혼용해도 상관이 없을까 하였는데, 그게 아니었다. 일반적으로 intellij 는 toList()를 쓰도록 권장을 한다. 그러나 바꾸고 나서 오류가 뜨는 상황이 오히려 생길 때도 있다. collect(Collectors.toList()) 자바 stream의 collect 메서드를 사용하여 요소..
2024.04.10 -
99클럽 6일차 TIL: Unix Time (nanoseconds)
#1. 오늘의 학습 키워드 자바스프링에서의 unix 시간을 나노초 단위로 구하고 싶을 때: 이전글인 Loki 에 로깅 정보를 API POST request 로 보낼 때 로그 라인에 앞 부분은 nanoseconds( 나노초 ) 단위로 찍힌 timestamp이다. 이 timestamp 를 보낼 때 자바 스프링에서 제공하는 나노초 단위의 현재 시각을 반환하는 메서드가 있다. System.nanoTime() 그런데 이로는 loki 에서 400 에러를 리턴하였다. 그래서 밀리초 단위의 현재 시각을 반환하는 메서드를 통해 나노초로 변환하여 log를 보냈더니, 오류가 나질 않았다. System.currentTimeMillis() 이 두 메서드를 통한 값을 디버깅 툴을 사용해 비교해보니 숫자의 자리수가 큰 차이가 없었..
2024.04.09 -
99클럽 5일차 TIL: Loki
#1. 오늘의 학습 키워드 자바스프링에서 로깅을 데이터를 저장하고 조회하는 방법 - Loki 개발하면서 모니터링은 필요하게 된다. 모니터링 툴 없이 로그를 조회하는 방법은 코드 자체에 log 명령어를 작성해, 실행되는 서버의 터미널에서 이를 조회하는 것인데, 이는 서버 자체에 부하를 줄 뿐 더러, 휘발성이 강하고, 가독성이 부족하기 때문에 모니터링 툴의 도움을 받아 로깅을 관리할 수 있으면 좋다. 그라파나 같은 툴로 데이터를 시각화, 분석을 할 수 있다. 그리고 오늘 소개할 로키와 같은 툴로 로그 데이터를 수집하고 저장할 수 있다. #2. 공부한 내용 Loki 그라파나 상 로그 출력 및 가시화를 할 수 있게 하는 로그 데이터 수집 툴. 수집 된 데이터는 저장이 되어 휘발되지 않는다. 프로메테우스, 쿠버네..
2024.04.08 -
99클럽 4일차 TIL: Collectors.toMap()
#1. 오늘의 학습 키워드 자바스프링에서 특정 리스트에서 구조를 분해하여 Map 구조로 만들고 싶을 때 편하게할 수 있는 방법 기존에는 리스트에서 특정 요소를 뽑아서 Map 구조로 만들고 싶으면, Map 객체를 선언하여 초기화해준다음, .put() 메서드로 for 문으로 리스트의 요소를 일일이 순회하여 Map 객체안에 집어넣어줬다. 이때 toMap() 메서드를 사용하면 더욱 간편히 Map 객체를 생성할 수 있다는 피드백을 받았다. //기존 방식 Map map = new HashMap(); for (PersonDto dto : dtoList){ map.put(dto.getId(), dto); } //새로운 방식 Map map2 = dtoList.stream() .collect(Collectors.toMap..
2024.04.07