글/기록

2023년을 보내고 2024년을 맞이하며

길고도 짧았던 2023년이 가고 2024년이 오고도 10일째인 1월 10일 지금. 2024년은 저에게 전반적으로 새로 시작하는 해가 될 것 같아 2023년을 회고하고 다는 지키질 못할 2024년 목표를 조심스럽게나마 적어놓으려고 합니다. 먼저, 2022년을 보내고 2023년을 맞이하며라는 제목의 작년 회고록에서는 2023년은 치료에 전념하고 수술을 잘 받고 회복에 초점을 맞추는 한 해를 다짐했었습니다. 치료는 잘 끝났고 수술도 잘 됐고 회복도 빠르게 하고 있습니다. 운도 너무 좋았고 결과적으로는 지금은 관리만 잘하면 멀쩡해질 수 있는 상태가 되었죠. 무엇보다 저를 응원해 주고 웃게 해 준 가족들, 친구들 주변 사람들한테 다시 한번 감사하다는 말을 남겨봅니다. 진심을 담아 감사합니다. 덕분입니다. 2023..

2024.01.10 게시됨

Back-end/Spring

[Spring/Kotlin] Spring + Kotlin 에서 Slf4j 사용하는 법(feat. KotlinLogging)

Java + Springboot 조합으로 개발을 한다면 Slf4j어노테이션은 누구나 한 번쯤은 들어봤을 겁니다. 또한 Java + Springboot 조합을 사용한다면 Lombok을 사용해서 각종 어노테이션을 제공받아 객체나 메서드들을 생성해서 사용하곤 하는데요. Slf4j의 Logger객체도 해당 클래스 위에 @Slf4j 어노테이션을 붙여주는 것만으로 편리하게 사용가능합니다. 하지만 Kotlin에서는 Lombok을 지원하지 않는데요. 이럴 경우 Slf4j를 당연히 사용할 수 없겠죠. 이번 포스팅에서는 Slf4j를 사용, Logger 객체를 직접 생성해서 사용하는 방법에 대해서 정리해보려고 합니다. 0. 일반적인 사용 예시 Slf4j의 Logger 객체를 생성하는 가장 일반적인 방법은 클래스 내부에서 L..

2023.08.30 게시됨

Language/Java & Kotlin

[Kotlin] companion object와 java의 static 차이점?

최근 개인 프로젝트를 진행하던 도중 자바를 코틀린언어로 컨버팅을 한 경험이 있습니다. 코틀린이라는 언어에 대한 이해도가 부족한 상태였기 때문에 Intellij에서 제공하는 기능을 사용한 후, ChatGPT의 도움을 받아서 컨버팅을 진행했습니다. 바뀐 코드를 정독하던 도중 아래와 같이 바뀐 사실을 확인 할 수 있었습니다. 자바 코드public class JavaConvert { private static final long MAX_SEAT = 100L; } 코틀린 코드public class MyClass { companion object { private const val MAX_SEAT = 100L } } 자바에서 상수를 선언할 때 많이 사용하는 static final 키워드인데요. (static에 대한..

2023.08.18 게시됨

Back-end/Spring

[Spring/TIL] Service 인터페이스와 ServiceImpl 클래스 구조를 나누는 이유와 나의 생각

Java + Spring을 사용한 프로젝트를 개발할 때 보통 위와 같이 Service인터페이스와 ServiceImpl을 나눠서 개발을 했습니다. 프로젝트를 진행하면서 이유도 모른 체 친구가 이게 좋다고 해서 만들어서 사용하다가 이번에 그 이유에 대해 알고 싶어서 공부해 보고 간단하게 정리를 해보려고 합니다. 0. 왜 이러한 구조를 사용할까요? 김영한 님의 강의에서도 언급이 되었고, 많은 블로그에서 이러한 구조를 사용하는 이유에 대해서도 많이 정리를 해놨습니다. 인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 확장할 수 있으며, 구현체 클래스를 변경하거나 확장해도 이를 사용하는 클라이언트의 코드에 영향을 주지 않도록 하기 위함이기 때문인데요. 이러한 구조로 프로젝트를 설계했을 때, interface에..

2023.06.21 게시됨