서버 게시판 저장 및 수정 로직 수정

2024. 12. 18. 13:52·운영/게시판

1. 애플리케이션

자바 스프링

 

2. 리팩터링 이유

파일이 존재할 때와 존재하지 않을 때를 if 문으로 나눴는데 긴 로직을 if else 사이로 중복되는 코드 사용

아래는 예전 코드인데 같은 로직을 불필요하게 if로 나눠서 나열하니 길어졌다. 보기 싫어서 메소드로 뺐는데 게시판 완성하고 깔끔하게 정리해야겠다고 생각했음

public ResponseEntity<Map<String, Boolean>> postBoard(
      @ModelAttribute BoardWriteRequest boardWriteRequest) {
    ResponseEntity<Map<String, Boolean>> success = createBoardNoFile(boardWriteRequest);
    if (success != null) {return success;}

    List<String> originalFileNameList = boardWriteRequest.files().stream().map(
            MultipartFile::getOriginalFilename)
        .toList();
    List<String> uploadFileNames = fileUtil.saveFiles(boardWriteRequest.files());
    BoardSaveRequest request = BoardSaveRequest.builder()
        .title(boardWriteRequest.title())
        .content(boardWriteRequest.content())
        .email(boardWriteRequest.email())
        .uploadFileNameList(uploadFileNames)
        .originalFileNameList(originalFileNameList)
            .originalName(boardWriteRequest.originalName())
            .saveName(boardWriteRequest.saveName())
            .savePath(boardWriteRequest.savePath())
            .classification(boardWriteRequest.classification())
        .build();

    boardService.save(request);
    return ResponseEntity.ok().body(Map.of("success",true));
  }
  
  private ResponseEntity<Map<String, Boolean>> createBoardNoFile(
      BoardWriteRequest boardWriteRequest) {
    if (boardWriteRequest.files() == null || boardWriteRequest.files().isEmpty()) {
      BoardSaveRequest request = BoardSaveRequest.builder()
          .title(boardWriteRequest.title())
          .content(boardWriteRequest.content())
          .email(boardWriteRequest.email())
          .originalName(boardWriteRequest.originalName())
          .saveName(boardWriteRequest.saveName())
          .savePath(boardWriteRequest.savePath())
          .classification(boardWriteRequest.classification())
          .build();
      boardService.save(request);
      return ResponseEntity.ok().body(Map.of("success", true));
    }

 

수정 후

public ResponseEntity<Map<String, Boolean>> postBoard(
      @ModelAttribute BoardWriteRequest boardWriteRequest) {
    List<String> originalFileNameList = new ArrayList<>();
    List<String> uploadFileNames = new ArrayList<>();

    if (boardWriteRequest.files() != null) {
      originalFileNameList = boardWriteRequest
          .files()
          .stream()
          .map(MultipartFile::getOriginalFilename)
          .toList();

      uploadFileNames = fileUtil.saveFiles(boardWriteRequest.files());
    }
    BoardSaveRequest request = BoardSaveRequest.builder()
        .title(boardWriteRequest.title())
        .content(boardWriteRequest.content())
        .email(boardWriteRequest.email())
        .uploadFileNameList(uploadFileNames)
        .originalFileNameList(originalFileNameList)
        .originalName(boardWriteRequest.originalName())
        .saveName(boardWriteRequest.saveName())
        .savePath(boardWriteRequest.savePath())
        .classification(boardWriteRequest.classification())
        .build();

    boardService.save(request);
    return ResponseEntity.ok().body(Map.of("success", true));
  }

 

단순하게 파일이 있으면 파일 저장로직 타는 간단한 문제였음

개발할땐 정신이 없어서 이상하게 만들었네.. 지금 보니 왜 저렇게 짰을까 싶다

수정 로직도 글쓰기 로직이랑 다를게 없기 때문에 똑같이 만들어서 수정 로직도 같은 방법으로 수정하겠다

'운영 > 게시판' 카테고리의 다른 글

게시판 성능 개선 1  (0) 2025.01.17
Java to Kotlin  (0) 2025.01.05
페이징 개선  (1) 2024.12.29
JPA n + 1 문제 해결  (0) 2024.12.22
게시물 수정 페이지 오류 수정  (1) 2024.12.18
'운영/게시판' 카테고리의 다른 글
  • Java to Kotlin
  • 페이징 개선
  • JPA n + 1 문제 해결
  • 게시물 수정 페이지 오류 수정
tokkaiiii
tokkaiiii
java 웹개발 로그
  • tokkaiiii
    tokkaiiii's 개발일지
    tokkaiiii
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • java (1)
      • project tool (1)
        • jira (1)
      • spring (9)
        • security (3)
        • database access (2)
        • batch (4)
      • Kafka (2)
      • CICD (2)
      • Oracle (0)
      • MSA (1)
      • 운영 (7)
        • 게시판 (7)
      • 앱 (1)
        • 플러터 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • tokkaiiii
  • 공지사항

  • 인기 글

  • 태그

    플러터
    앱개발
    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
tokkaiiii
서버 게시판 저장 및 수정 로직 수정
상단으로

티스토리툴바