Back-end/Spring

[Spring/TIL] Autowired와 RequiredArgsConstructor의 비교

최근에 이직을 해서 새로운 회사의 코드를 들여다보는 중입니다. SpringBoot를 사용하지 않고 Spring 프레임워크를 자체적으로 사용하는 프로젝트들이 있고 이들을 리팩토링 하는 작업도 진행 중에 있습니다. 기존 Spring만 사용하던 프로젝트 코드들을 보면 lombok 라이브러리를 사용하지 않고 Autowired 어노테이션을 사용해서 의존성 주입을 진행했습니다. 제가 전에 다니던 회사, 사이드 프로젝트를 진행 할 때는 당연하게 lombok 라이브러리를 사용했고 RequiredArgsConstructor 어노테이션을 사용해서 의존성 주입을 했는데요. 이번 포스팅에서는 왜 Autowired말고 RequiredArgsConstructor를 사용했고, 어떤 장점이 있고 단점이 있는지 살펴보려고 합니다. 0..

2024.02.28 게시됨

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 게시됨

Back-end/Spring

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

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

2023.06.21 게시됨

Back-end/Spring

[Spring/TIL] 커스텀 어노테이션(@AuthUser) 구현

유저를 기본적으로 가지고 있는 서비스 개발을 하다 보면 대부분의 API에서 유저의 정보를 필요로 합니다. 이런 상황에서 제일 많이 쓰는 방법이 Custom 어노테이션을 만들어서 API 요청을 할 때, parameter로 넘겨서 사용하는 방법이 있습니다. Custom 어노테이션은 Jwt 등 유저의 정보를 담고 있는 무언가(대부분 토큰이나 IAM 토큰을 사용합니다.)에서 유저의 정보를 가져와서 넘겨주는 역할을 하게 되죠. 이번 게시물에서는 유저의 정보를 들고 다닐 수 있는 Custom 어노테이션을 만들어서 사용하기 위해 구현한 과정들을 정리해보려고 합니다. 0. Custom 어노테이션이란? 먼저 어노테이션은 애플리케이션이 실행될 때 추가적인 정보를 제공해주는 메타 데이터입니다. 여기서 메타 데이터란 어플리케..

2023.05.31 게시됨