본문 바로가기

전체 글

(172)
[ 230716 ] 31주차 회고 일주일 간 진행한 내용 1. 다른 페어와 코드 리뷰 2. 미니 프로젝트 진행 다른 페어와 코드 리뷰 [진행] 화요일 쯤에 과제 3을 제출했다. 제출하고 코드 리뷰 페어가 정해져서 목요일에 코드 리뷰 시간을 가졌다. 30분 정도 서로의 코드를 보는 시간을 가졌다. 그 후 이슈를 생성해서 좋았던 점과 피드백 할 점을 작성했다. 우리 쪽에는 이번에 댓글 기능을 추가했는데 Controller 분리를 해보는 것이 어떠한지 등에 대한 질문이 들어왔다. 이러한 질문들에 답을 하는 시간을 가졌다. [생각] 코드를 발전시키기 위해서 코드 리뷰 하는 시간을 가지는 것은 너무 좋다. 그다른 분들의 의견을 들으면서 내가 잘못 알고 있거나 작성한 코드에 대해서도 알 수 있다. 이러한 시간들을 통해 성장할 수 있기 때문에 중간 ..
[230715] [미니] 모여봐요 인생네컷 CI/CD 구성 (1) CI/CD ✔ 용어 정리 📕 CI/CD는 애플리케이션의 개발 단계를 자동화하여 짧은 주기로 사용자에게 제공하는 방법이다. 📄 CI(Continuous Integration)는 프로젝트를 할 때 "각각의 작업을 어떻게 잘 통합할 수 있는가?"이다. 📌 방법은 빌드 자동화 및 각 작업을 공유 브랜치에 수월하게 병합할 수 있게 하는 테스트 자동화 등이 있다. 📄 CD(Continuous Deliver)는 빌드된 애플리케이션 코드를 배포를 위한 저장소에 저장하는 것이다. 📄 CD(Continous Deployment)는 빌드된 애플리케이션 코드를 배포 자동화 하는 것이다. 📌 Continous Deliver와 Continous Deployment 두 용어는 자동화가 어느 정도까지 되었는가에 따라 사용이 된다. ..
[230714] [미니] 모여봐요 인생네컷 S.A 목표 ✔ 메인, 인생네컷 작성, 인생네컷 목록, 인생네컷 상세 화면 구성 ✔ CR(U)D API 작업 ✔ 자동 배포를 위해 CI/CD 작업 와이어 프레임 API 명세 페이지 기능 method API url request response 구현 하는 사람 메인 인생네컷 메인 사진 조회 GET /api/photos/main { photo:링크 } 정지현 인생네컷 글 목록 인생네컷 게시글 목록 조회 GET /api/post {[ username: 사용자 이름, title: 제목, content: 내용, createdAt:작성날짜, photo:링크], [ username: 사용자 이름, title: 제목, content: 내용, createdAt:작성날짜, photo:링크] …} 이채원 인생네컷 글 상세 인생네..
[230713] Record 적용해보기 Record 💬 class, interface 등과 같은 타입 선언으로 불변 객체로써 데이터를 표현하기 위해 만들어졌다. 또한 다양한 기본적인 기능들을 제공해 편리하게 사용할 수 있다. ✔ 모든 필드에 private final 적용 ✔ 모든 필드에 getter 적용 ✔ 모든 필드를 인수로 가지는 생성자 ✔ 모든 필드가 일치할 경우 true를 반환하는 equals 메서드 ✔ 모든 필드가 일치할 때 동일한 값을 반환하는 hashcode 메서드 ✔ 클래스 이름과 모든 필드의 값을 포함하는 toString 메서드 Record 코드 적용 ✔ 기존 코드 @Getter @RequiredArgsConstructor public class PostRequestDTO { private final String title; ..
[230712] Filter에서 400 상태코드 내려주기 Filter에서 ExceptionHadler ✔ filter 코드 if(!jwtProvider.validateToken(token)){ throw new IllegalArgumentException("유효하지 않은 토큰입니다"); } ✔ CustomExceptionHandler 코드 @ExceptionHandler(IllegalArgumentException.class) public ResponseEntity handleUserException(IllegalArgumentException e) { log.error("IllegalException",e); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage()); } ✔ 문제 ❗S..
[230711] @Transactional(readOnly = true) Transactional(readOnly = true) 💬 Transaction에 readOnly 옵션을 사용하면 수정과 저장하는 것을 방지할 수 있다고 한다. 또한 수정이 일어나지 않기 때문에 별도로 스냅샷에 비교 객체를 저장해두지 않는다고 한다. 이를 통해 메모리 사용량을 최적화할 수 있다. ✔ 저장 및 수정을 예방 @Transactional(readOnly= true) public Post getPost(Long id) { postRepository.save(new Post()); } ❗java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed ✔ 스냅샷 별도 저장하지 않는다 💬..
[230710] Enum이란? Enum 💬 관련 있는 상수들을 모아놓는 데이터 유형입니다. ✔ 모든 필드는 대문자여야 한다 ✔ 모든 필드는 싱글톤 방식의 객체로 만들어진다 ✔ 모든 필드가 사용할 수 있는 생성자와 객체를 정의할 수 있다. ✔ Switch문에 사용 가능하다 ✔ name, values 등 기본 메서드를 제공한다. ✔ 선언 방식 public enum UserRoleEnum { USER, ADMIN } ✔ 생성자, 메서드 포함 선언 방식 public enum UserRoleEnum { USER("ROLE_USER"), ADMIN("ROLE_ADMIN"); private final String authority; UserRoleEnum(String authority) { this.authority = authority; } p..
[230709] Builder 패턴과 어노테이션 Builder 💬 자바 스프링에서 빌더 패턴이란 동일한 생성 방식으로 다양한 형태의 객체를 만들 수 있는 것을 말한다. 옵셔널 멤버 변수가 많은 경우 사용하면 좋은 디자인 패턴이라고 한다. ❓장점은 ✔ 생성자를 여러 개 만들 필요가 없다. 하나의 생성 방식으로 다양한 형태의 객체를 만들 수 있기 때문이다. ✔ 각 파라미터의 값을 명시적으로 넣어줄 수 있어 타입과 순서를 헷갈리는 일이 없다. Builder 직접 만들어보기 ✔ PostResponseDto 코드 @Getter public class PostResponseDto { private String title; private String writer; private String content; private LocalDateTime createdA..