Spring In Action(제5판)을 공부하던 중 Converter를 사용해 클라이언트에서 도메인 객체에 대한 id 값을 전달하면 id를 DB에서 도메인 객체를 조회하는 내용이 나왔다.Converter 구현import org.springframework.core.convert.converter.Converter;...@Component@RequiredArgsConstructorpublic class IngredientByIdConverter implements Converter { private final IngredientRepository ingredientRepository; @Override public Ingredient convert(String id) { re..
들어가며 F-lab 프로젝트를 진행하며 글을 작성했을 때 작성자를 팔로우하고 있는 회원에 대한 피드를 생성하는 로직을 구현하는 일이 있었다. 피드 발행 기능을 개발하며 동기 처리를 했을 때와 비동기 처리를 했을 때 성능차이를 살펴보며 스프링의 비동기 처리에 대해 간략히 알아보고자 한다. 간단한 비동기 처리방법 @Configuration // componentScan이 되어야 하므로 @EnableAsync public class AsyncConfig { ... } @Async // 비동기 처리를 하고자 하는 로직에 추가 public void save(Post post, User writer){ ... } 1. 먼저 루트 프로젝트 하위에 비동기처리 관련 설정 클래스를 만든다. 해당 클래스에 @Configur..
들어가며 f-lab 멘토링을 진행하며 SNS 서비스를 만들어보는 프로젝트를 진행하고 있다. 엔티티를 설계하는 과정에서 다대다 관계의 테이블이 필요한 상황이었다. 예를 들어 회원이 좋아요를 한 글을 관리하고 싶었는데 한명의 회원은 다수의 글에 대해 좋아요를 할 수 있고 반대로 하나의 글은 여러 회원들에게 좋아요를 받을 수 있는 상황이므로 회원과 글 사이에는 다대다 관계가 성립하는 것이다. 프로젝트는 JPA를 사용하고 있으므로 @ManyToMany를 사용해 다대다 관계의 엔티티로 설계를 하였다. 그런데 Pull Request에 대한 리뷰를 멘토님이 해주시며 @ManyToMany 사용을 지양해야 한다고 말씀해주셨다. 첨부해주신 글에는 @ManyToMany를 사용했을 때 JPA에서 연결 테이블을 만들어 주기는 ..
문제 상황 어떤 웹 사이트가 있고 해당 서버의 포트가 8080이라고 가정해보자. 우리는 웹사이트에 접속할 때 도메인주소:8080로 입력하지 않는다. 예를 들자면 우리는 naver.com 이라고 입력하지 naver.com:8080이라고 입력하지 않는다. 그런데 문제는 HTTP 통신의 기본포트는 80이다. 즉 naver.com 이라고 입력하면 naver.com:80으로 요청을 보내는 것이다. 서버는 8080번 포트로 온 요청에 대해서만 받을 수 있으므로 결국 정상적인 통신을 하지 못하게 된다. 이 문제를 어떻게 해결할 수 있을까? Nginx의 Reverse Proxy 이럴 때 사용할 수 있는게 Nginx이다. Nginx에 대해 찾아보면 Nginx를 사용하는 여러가지 용도에 대해 찾아볼 수 있다. 예를 들어 ..
작업환경 Jenkins: 2.426.2 jenkins와 github 연동 jenkins에서 빌드를 하려면 git repository를 클론하여 빌드를 실행해야 한다. 따라서 jenkins에서 github에 접근하기 위한 작업을 해주어야 한다. 1. github 계정에 접속해 settings에 들어간다. 2. Developer settings에 들어간다. 화면을 아래로 좀 스크롤하면 왼쪽 메뉴 바 맨 아래쪽에 Developer settings 탭이 있다. 해당 탭을 클릭한다. 3. Tokes 탭에 들어간다. 왼쪽 메뉴 바에서 Personal access tokens를 클릭하면 Tokens(classic)이 보인다. 해당 탭을 클릭한다. 4. Generate new token을 눌러 토큰 발급 화면으로 이동..
들어가며... 프로젝트 진행에 앞서 준비하는 과정에서 git 브랜치 전략에 대한 얘기를 멘토님과 하게 됐다. 사실 멘토님에게 프로젝트의 브랜치 전략에 대해 잘 설명하지 못했다. 실무를 할 때 브랜치를 나눠서 관리하고 있지만 주로 혼자하다보니 브랜치 전략에 대해 명확히 이해하지 않았고, 때문에 체계적으로 관리하지 못했다. 이번 기회에 브랜치 전략의 종류에 대해 살펴보고 회사에서 사용하는 브랜치 전략이 무엇인지, 프로젝트에서 사용할 브랜치 전략은 무엇이 적합할지 살펴보고자 한다. 브랜치란 무엇인가? git에서 사용하는 브랜치란 무엇일까? 정확히는 왜 사용하는 것일까? 결론적으로는 개발의 안정성과 생산성을 높이기 위함이다. 브랜치의 사전적 의미는 가지라는 뜻이다. 여러 가지가 모여서 하나의 나무를 이루듯이 여..