본문 바로가기

Spring Boot Project/Plming20

[Plming] 게시판 기능 코드 리뷰 6편 (알림 기능) 저번 글에서는 댓글과 관련된 코드를 살펴보았다. 이번 글에서는 알림 기능과 관련된 코드를 리뷰해볼 것이다. 알림 기능은 이 블로그를 참고해서 구현했다. 알림 기능과 관련된 코드의 폴더 구조이다. 이번에도 entity 패키지와 dto 패키지의 코드를 먼저 살펴본 뒤 repository 패키지, service 패키지, controller 패키지의 코드를 살펴볼 것이다. 1. Entity 패키지 1.1. NotificationContent 더보기 @Getter @Embeddable @NoArgsConstructor(access = AccessLevel.PROTECTED) public class NotificationContent { private static final int MAX_LENGTH = 50; @.. 2022. 4. 21.
[Plming] 게시판 기능 코드 리뷰 5편 (댓글 기능) 저번 글에서는 게시글 검색 기능 관련 코드 리뷰를 진행했다. 이번 글에서는 댓글 기능 코드를 리뷰해볼 것이다. 댓글 기능 관련 코드 폴더 구조이다. 먼저 dto 패키지와 entity 패키지에 포함되어 있는 코드들을 살펴본 뒤, 기능 별로 controller -> service -> repository 순으로 살펴볼 것이다. 1. entity 패키지 1.1. Comment 더보기 @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "comment") public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long i.. 2022. 4. 19.
[Plming] 게시판 기능 코드 리뷰 4편 (검색 기능) 저번 글에서는 게시글 신청과 관련된 코드를 리뷰해보았다. 이번 글에서는 게시판 검색과 관련된 코드들을 리뷰해보려 한다. 게시판 검색 조건은 제목, 내용, 제목+내용에 포함된 키워드를 통해 검색할 수 있으며, 카테고리, 모집 상태, 태그, 기간, 최대 참여 가능한 인원수별로 검색이 가능하다. 또한, 검색 조건이 아무것도 없는 경우에는 게시글 전체 리스트를 반환한다. 1. SearchApiController @RestController @RequestMapping("/posts") @RequiredArgsConstructor public class SearchApiController { private final SearchService searchService; @GetMapping public Respon.. 2022. 4. 15.
[Plming] 게시판 기능 코드 리뷰 3편 (신청 기능) 저번 글에서는 게시판 CRUD 기능과 관련된 코드를 리뷰해보았다. 이번 글에서는 게시글 신청, 검색 기능과 관련된 코드를 살펴보며 개발을 진행하면서 궁금했던 점과 공부해야 할 부분들을 정리해볼 것이다. 1. 게시글 신청 사용자는 게시글에 참여 신청을 할 수 있고, 게시글을 작성한 사용자는 참여를 신청한 사용자를 승인, 거절할 수 있다. 또한, 본인의 게시글에 들어갈 경우 게시글 상세 정보와 함께 현재 신청한 사용자와 참여가 승인된 참여자 목록을 보여줄 것으로 계획했기 때문에 이와 관련된 API도 필요했다. 만약 본인이 작성한 게시글이 아닌 경우에는 게시글 상세 정보와 참여가 승인된 참여자 목록만 보이도록 할 예정이다. 이제 기능별 코드를 하나씩 살펴볼 것이다. 1.1. 게시글 신청하기 게시글을 신청하려는.. 2022. 4. 14.
[Plming] 게시판 기능 코드 리뷰 2편 (게시글 CRUD 기능) 이전 글에서는 entity 패키지와 dto 패키지의 코드들을 리뷰했다. 이번 글에서는 게시글 CRUD 기능 관련 코드들을 리뷰해보려고 한다. 각 기능 별로 Controller -> Service -> Repository -> return 값 순서로 코드를 살펴보면서, 궁금한 점과 리팩터링 할 코드가 있는지 정리해볼 것이다. 게시판 CRUD와 관련된 로직은 Board, BoardRepository, BoardCustomRepository, BoardCustomRepositoryImpl, BoardApiController, BoardService 클래스에서 처리한다. 1. 게시글 생성 BoardApiController /** * 게시글 생성 */ @PostMapping public ResponseEntity.. 2022. 4. 13.
[Plming] 게시판 기능 코드 리뷰 1편 (Entity와 DTO 객체 살펴보기) 원래 계획은 기능을 하나하나 만들어가는 모든 과정을 기록하면서 진행하려고 했으나, 프론트엔드에게 API를 전달해주기로 한 날짜가 얼마 남지 않았어서 기능 개발을 먼저 완료하고 API를 전달한 뒤에 코드 리뷰를 해보려고 한다. 먼저 게시글 관련 코드의 폴더 구조이다. controller controller 패키지 안에는 Controller 클래스가 들어가 있다. Controller는 HTTP 요청을 처리하고, 브라우저에 보여줄 HTML을 뷰에 요청하거나, REST 형태의 응답 몸체에 직접 데이터를 추가하는 역할을 수행한다. BoardApiController 게시글 CRUD, 신청 기능과 관련된 Controller 클래스 SearchApiController 게시글 검색 관련 Controller 클래스 초기 .. 2022. 4. 13.
[Plming] 신청 기능 추가하기 게시글의 신청 버튼을 추가해 사용자가 참여하고 싶은 모임에 참여할 수 있도록 기능을 추가하려고 한다. 1. DB 테이블과 Entity 생성 우선 신청 정보를 담을 DB를 생성해보자. CREATE TABLE `application` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` bigint(20) NOT NULL COMMENT '사용자ID', `post_id` bigint(20) NOT NULL COMMENT '게시글ID', `status` enum("승인", "거절", "대기") NOT NULL DEFAULT "대기" COMMENT '지원상태', PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `post_id` (.. 2022. 4. 4.
[Plming] 게시글 기능 테스트 지금까지 기능 개발을 진행하면서 테스트를 계속 진행하기는 했지만, 테스트 파일 이곳저곳에서 테스트를 진행해 각 기능의 테스트 코드가 어디 들어가 있는지 파악하기 힘들었다. 따라서 application을 매핑하기 전에 그동안 개발해온 기능들도 다시 한번 테스트하고, 테스트 코드도 정리할 겸 한 번 더 기능 테스트를 하기로 결정했다. 테스트는 JUnit을 사용할 예정이다. 진행해야 할 테스트는 아래와 같다. BoardServiceTest save( ) - 게시글 등록 update( ) - 게시글 수정 delete( ) - 게시글 삭제 (실제 DB에서 삭제) deleteYn( ) - 게시글 삭제 (deleteYn의 값을 1로 변경) findAll( ) - 게시글 리스트 조회 findAllByDeletYn( ).. 2022. 4. 2.
[Plming] 태그 관련 연관 관계 매핑 게시글을 생성할 때 사용자가 게시글과 관련된 태그를 선택할 수 있도록 구현하기로 했다. 이 경우 게시글과 태그를 일대다 관계로 구현하기 위해 두 테이블을 연결하기 위한 연관 Entity가 필요하다. 따라서 태그를 구현하는데 필요한 연관 Entity를 먼저 생성해줄 것이다. (DB 연관관계 설정 부분에서 생성한 Entity를 약간 수정했다.) 1. Entity 생성 및 수정 먼저 Tag entity를 생성해볼 것이다. "plming" 패키지 아래 tag 패키지를 생성하고 "entity" 패키지를 생성한 후 Tag 클래스를 생성한다. Tag 클래스 생성이 완료되면 더보기 코드를 작성한다. 더보기 package plming.tag.entity; import lombok.AccessLevel; import lo.. 2022. 4. 1.
[Plming] 게시판 API 서버에 올리기 지금까지 진행된 게시판 API를 서버에 올려 프론트엔드와 연동해 테스트할 수 있도록 할 것이다. 서버에 배포 파일을 올리기 전에 기존에 작성한 API 문서를 수정하다 구현하지 않은 기능이 있어 먼저 기능을 구현한 뒤 배포 파일 빌드를 진행할 것이다. 마이페이지에 들어갔을 때, 사용자가 작성한 게시글을 확인할 수 있도록 사용자가 작성한 게시글 리스트만 조회할 수 있는 기능을 추가할 것이다. 1. 사용자 ID 기준 게시글 리스트 조회 기능 추가 먼저 BoardRepository에 findAllByUserId 메서드를 추가한다. package plming.board.entity; import org.springframework.data.domain.Sort; import org.springframework.d.. 2022. 3. 31.
728x90
LIST