TIL
2023.11.29 TIL - 단위테스트와 Mockito
내배캠 심화과제로 저번에 했던 개인과제 프로젝트인 to-do-list 앱에 대한 테스트코드를 작성을 해야한다. 단위 테스트와 통합 테스트 코드를 작성해야하는데, 우선 단위 테스트 코드를 작성하기로 했다. 테스트코드를 작성하기 전, 단위테스트가 무엇인지와 단위 테스트를 할 수 있게 도와주는 Mockito라이브러리에 대해 정리를 하려한다. Unit Test (단위 테스트) 란? 소스코드의 특정 모듈(프로그램 내 하나의 기능을 부르는 말)이 의도된 대로 정확히 작동하는지 검증하는 절차이며, 함수, 메서드, 개별 코드 같은 작은 단위에 대해 테스트 케이스(Test Case)로 분리하고 테스트 코드를 작성하여 테스트하는 것을 말한다. SpringMVC 기준으로 쉽게 말하자면 각 레이어 (Controller, Se..
2023.11.28 TIL - OAuth란?
오늘 심화주차가 시작되면서 강의를 새로 받았다. 첫 강의는 소셜로그인부터 시작했다. 소셜로그인은 OAuth 표준 인증 방식을 통해 구현되었습니다. OAuth란? Open Authorization의 약자입니다. 애플리케이션이 특정 시스템의 보호된 리소스에 접근하기 위해, 사용자 인증(Authentication)을 통해 사용자의 리소스 접근 권한(Authorization)을 위임받는 것을 의미합니다. Authentication과 Authorization의 차이는 간단하게 다음과 같습니다. OAuth 동작 흐름 OAuth를 활용한 카카오 로그인을 보면 다음과 같습니다. 1. 리소스 소유자(이하 유저)가 클라이언트 서비스를 이용하고자 이용 요청을 보냅니다. 2. 클라이언트는 검증 서버(카카오 인증서버) 에 액세..
2023.11.23 TIL - JPA 복합키 사용하기 (Feat. 팔로우 API)
오늘 한 것 팀 프로젝트 팀 프로젝트 팀프로젝트 필수 요구사항들을 끝내고 추가 요구사항중 팔로우 기능을 구현하기로 했다. 기능을 구현하기전 엔티티 설계와 ERD 를 작성했다. 팔로우 엔티티 설계 팔로우는 팔로우를 받는 팔로워_id와 팔로우를하는 팔로잉_id를 갖고있다. entity면 2개의 회원 엔티티이다. 처음에는 이를 회원과 각각 ManyToOne 관계를 맺었는데, 다음과 같은 이유로 복합키를 가진 엔티티로 변경했다. 1. 팔로우 관계가 팔로우 테이블과 회원 테이블 의 연관이 되어있는게 맞는가? 예를들어 게시판과 게시판 타입의 관계를 생각해보면 게시판의 타입을 수정할 때마다 게시판 타입이 변경될 수 있다. 게시판의 상태에 따라 게시판 타입도 변경되는 것이다. 그러므로 둘은 서로 관계를 가지고있다. ..
2023.11.22 TIL - 엔티티를 저장할 때, 연관관계 엔티티 저장 방법에 대해서 (feat. referenceBy)
오늘 한 것 팀 프로젝트 오늘 내가 맡은 역할 ( 예외 응답 공통 포맷, 회원 API, 인증 인가 처리 (Jwt)를 구현하였다.. 구현하면서 팀원들의 질문도 해소하는 시간을 가지다, 게시글 API 를 맡던 팀원의 질문에 답을하면서 생기던 고민이 있어 글에 정리하고자 합니다. 고민 고민이 되었던 부분은 다음과 같습니다. 게시글(Post)를 저장할 때, Post가 참조하는 Member(회원) 엔티티를 넣어주어야합니다. ex Post post = new Post(postRequest, member) postRepository.save(post) 여기서 Member 엔티티가 문제입니다. 현재 구조상 인증객체가 가지고있는 회원 정보는 Dto로 구성하야 만들었는데, 이 DTO로 임시 Entity를 만들어야 하는지..
2023.11.21 TIL
오늘 한 것 팀 프로젝트 팀 프로젝트 오늘부터 팀프로젝트 발제가 시작됐다. 이번 팀프로젝트는 주어진 시간이 얼마 없어서 오늘 하루종일 기획, 설계하는 시간을 가졌다.. 이렇게 이쁘게 팀 소개, 팀원 소개도적고 ERD, API 명세, 와이어프레임 등 기초 설계 산출물들을 작성했다. 후.. 기초 설계는 끝냈고 오늘 자기전까지 프로젝트 환경 구성만 해놔야겠다..
2023.11.17 TIL
오늘 한 것 알고리즘 스터디 개인 프로젝트 과제 알고리즘 스터디 오늘도 알고리즘 스터디를 진행했다. 프로그래머스 - 달리기 경주 문제이다. 계속 문제를 풀다보니 이제 점점 풀 수 있게 되서 다행이다. 풀이는 아래에 포스팅 해놓았다. 개인 프로젝트 과제 이어서 프로젝트 과제를 진행중이다. 오늘은 밀린 강의를 듣느라 많이 진행은 못하고 회원 API와 할 일 생성 API를 구현했다. 구현하면서 dto의 역할과 RESTFul한 url 에 대해 고민을 많이했다. 다음 주 월요일까지 3일 정도남았는데.. 주말에 열심히 해야겠다.
2023.11.16 TIL
오늘 한 것 내배캠 스프링 챌린지반 특강 듣기 개인 프로젝트 과제 챌린지반 특강 오늘은 Redis 가 무엇인지, 어떻게 구축하고 Spring boot 에서 연동하고 사용하는 방법에 대한 강의를 들었다. 조회 성능을 위해 꼭 필요한 캐시 저장소인 만큼, 꼭 필요한 지식이었는데 잘 가르쳐주셔서 정말 좋았다. 게다가 실제 업무에서 사용하는 레디스 컴포넌트 코드도 공유해주셨다. (매우감사...) 과제에서 Refresh Token 관리하고 로그아웃 할 때 잘 써먹어야겠다. 개인 프로젝트 도메인 설계에 이어서, 오늘은 프로젝트 환경 구성 (DB, Redis, Swagger) 설정과 Security 설정 및 인증 처리를 진행했다. Springboot3에서 Swagger 설정하는게 버전이 올라서 변경된 점이 있어 레..
2023.11.15 TIL
오늘 한 것 숙련 과제 프로젝트 숙련 과제 프로젝트 강의도 거의 들었겠다, 오늘부터 과제를 진행하기로 했다. To-Do List를 구현하기 위한 API + @ 로 페이지까지 구현하는 과제다. 회원 인증/인가 처리를 JWT로 하고 Security로 처리해야한다. 그외엔 기본적인 CRUD + 정렬,검색... 오늘은 우선 ERD와 UseCase 작성하고 기본 도메인 엔티티만 구현해놓았다. 내일부터 본격적으로 구현해야지.. 프로젝트 진행과정도 포스팅 해야겠다.