[JAVA] 게시판 작성하기3 Backend에서 받는 첨부파일 포함 VO 만들기

2023. 5. 21. 00:24Programming/기술 정리

 

이번 게시물의 주요과제는 어떤 VO가 Backend단에서 정상적으로 데이터를 전송 받을수 있는지 였다.

 

나의 경우 처음에는 일반 value로 VO로 받기 위해 생성하였다가 오류가 발생하였다.

 

첨부파일도 전송되고, 테이블에도 정상적으로 insert되었지만 최종적으로는 에러로그가 나타났던것이다.

 

그 해결 방법은 다음과 같다.

 

 

 

 


@Data
public class TestVO implements Serializable{

private String title;

private String contents;

/*
프론트 단에서 JSON.Stringyfy(obj)형태로 전송했으므로, VO도 String 형태가 된다.
이후에 다시 Serivce단에서 ObjectMapper를 이용하여 객체화 시켜줘야함 
*/
private String obj;

/*
JsonIgnore 어노테이션을 붙여주지 않으면 후에 VO가 프론트로 json형태로 다시 return 해주는 과정에서 오류가 발생한다.
따라서 @JsonIgnore를 붙여주어야 함
*/
@JsonIgnore
private List<MultipartFile> fiel1;

 

/*

N대 N의 첨부파일을 가지기 위한 file2 변수

*/
@JsonIgnore
private List<MultipartFile> file2;


}

 

 

 

 

 

 

 

 

+) 일반적으로 첨부파일을 Controller로 넘기는 방법을 구글링해보면 파라미터를  @requestParam을 통해 직접적으로 받는 경우가 많다. 그러나 이는 첨부파일이 증가할 수록, 유지보수 하기 힘들다고 생각한다. 따라서 파라미터는 VO로 관리하는 것이 클린코드를 지향하는 방법인거 같다.

 

 

+) 단, fiel1과 같이 List<MultipartFile> 타입의 첨부파일 변수명과, 프론트단에서 전송하는 첨부파일의 변수명과 일치해야 함을 잊지말자.