Back-end/Spring

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

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

2023.05.31 게시됨

Back-end/Spring

[Spring/TIL] Github Actions 배포환경에서 Github Submodule로 application.yml 관리하기.

현재 프로젝트의 핵심 기능 구현이 어느 정도 마무리가 되면서 이제 배포환경을 고려해야 했습니다. 가장 흔하게 사용하는 Jenkins 말고 이번에는 Github Actions를 사용해 보기로 결정했는데요. 여러 방면으로 Jenkins와 Github Action의 장점을 따져본 뒤 지금 프로젝트에는 Github Actions가 더 낫다고 판단했습니다. 이번 포스팅에서는 Github Actions CI/CD 환경에서 프로퍼티 설정들을 관리하는 방법들에 대해서 정리해보려고 합니다. 0. Github Action을 사용한 이유? 첫 번째로 Jenkins는 초기 설정 시 Github Actions 보다 리소스가 많이 발생합니다. 호스팅을 처음부터 끝까지 직접해야 하기 때문에 문서 또한 관리를 해야 하죠. Githu..

2023.04.19 게시됨

Back-end/Spring

[Spring/TIL] columnDefinition = "TINYINT(1)" 사용 시 주의할 점

진행 중인 사이드 프로젝트에서 유저의 활성상태를 체크하기 위해 Member라는 엔티티에 activated 라는 Boolean 타입의 column을 추가해서 사용하고 있습니다. local에서 테스트를 할 경우 DB는 h2를 사용하고 있었는데요. 굉장히 오랜시간동안 Error executing DDL ~ 에러가 발생했고 해결한 과정을 짧게라도 기록해 놓으려고 합니다. 결과부터 정리하자면, H2 데이터베이스에서는 TINYINT 타입을 지원하지 않습니다. 먼저 Member 엔티티의 코드를 보겠습니다. @Getter @Entity @NoArgsConstructor @AllArgsConstructor @Builder public class Member extends BaseTimeEntity { @Id @Gener..

2023.04.12 게시됨

Back-end/Spring

[Spring/TIL] 댓글, 대댓글을 구현할 때 고려해봐야 할 점에 대하여

최근 서비스들을 봤을 때, 빠질 수 없는 기능 중에 댓글과 대댓글이 있습니다. 현재 진행 중인 프로젝트에도 댓글과 대댓글 기능을 추가했는데요. 댓글과 대댓글을 구현하는 방법 중에 여러 가지가 있지만 어떤 방법을 선택했고, 선택한 과정에서 알게 된 내용들에 대해 정리해보려고 합니다. 0. 첫 번째 생각 가장 먼저 생각을 했던 방법입니다. 굉장히 직관적이였죠. 대댓글 엔티티의 경우 부모댓글을 알 수 있는 필드가 반드시 필요하게 됩니다. 따라서 부모댓글의 PK값을 자식댓글에서 가지고 있도록 아래와 같이 설계했습니다. @Entity @Table(name = "pin_comment") @Builder @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsCons..

2023.04.05 게시됨