인프런 커뮤니티 질문&답변

cjswoudddn님의 프로필 이미지
cjswoudddn

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

도메인에서 처리해야할 부분인지 질문드립니다!

해결된 질문

작성

·

376

0

안녕하세요 영한선생님!

훌륭한 강의와 친절한 피드백 항상 감사합니다.

강의 자체가 너무 완벽해서 강의 내용을 잘 이해했다고 생각했는데

개인프로젝트를 진행하며 강의와 연관된 응용적인 내용에서 막히는 부분이 있어 질문드립니다!!

답변해주시길 부탁드리겠습니다!

현재 회원가입 양식에서 유저의 이메일과 비밀번호, 프로필사진을 입력받고 있습니다.

클라이언트에서 텍스트와 이미지를 동시에 전송하는 multipartform방식을 사용했습니다.

그래서 데이터를 받을 때도 MultipartHttpservletRequest로 받았습니다!

이제 서비스계층에서 처리하는 작업은 도메인에게 dto를 전달해 적절히 초기화된 Member를 요청하고

그 Member가 중복이메일을 가졌는지 체크한 뒤 

MemberRepository에 저장하는 형식으로 코드를 짰습니다.

이때 Member생성 시 필요한 작업인 프로필 이미지를 aws s3에 넣고 url을 저장하는 부분과 

비밀번호를 인코딩하는 작업은 제  판단으로 도메인인 Member에게 맡기는 게 맞겠다 싶었습니다.

다만, Member는 스프링컨테이너의 관리는 받지 않아 스프링빈인 awsS3Service와 passwordEncoder의 

의존성 주입을 받지 못했습니다. 

그래서 파라미터로 전달해 작업을 처리했습니다!

결국 이런 파라미터의 전달방식은 유지보수성을 떨어뜨리는 것 같습니다.

awsS3Service를 추상화한 인터페이스를 정의하는 방법이 떠오르긴 하지만 

결국 파라미터 전달이라는 부분이 계속 찝찝합니다 ㅠㅠ

그렇다고 MemberService에서 Member의 setter를 열어 수정하자니 이것도 임시방편인 것 같습니다.

이러한 문제의 최적화된 해결방법이 있을까요??

애초에  multipartform으로 입력받는 게 안 좋은 방법일까요?

데이터를 따로따로 받아서 처리하는 게 현업에서 자주 쓰이는 방법일까요??

강의 내용과 직접적인 연관이 없는 내용의 질문이어서 죄송합니다 ㅠㅠ

객체지향을 고려한 예제를 찾는 게 쉽지않아 결국 선생님께 질문드리러 왔습니다.

작은 힌트라도 주시면 감사하겠습니다!!

답변 2

1

cjswoudddn님의 프로필 이미지
cjswoudddn
질문자

감사드립니다! 

말씀주신 내용으로 참고해서 진행하겠습니다!!

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. cjswoudddn님

먼저 MultipartServletRequest 같은 웹에 종속적인 부분을 서비스 계층으로 이동하시는 것은 좋지 않습니다.

파일 등록 부분은 별도의 클래스로 만들어서 빈에 등록해서 사용하거, 또는 컨트롤러에서 파일 업로드를 완료 하시고,

최종으로 생성된 파일 경로나 URL 정보만 회원 서비스에 문자로 넘기는게 좋겠습니다.

감사합니다.

cjswoudddn님의 프로필 이미지
cjswoudddn

작성한 질문수

질문하기