객체간의 책임과 역할
#컨트롤러의 책임
-
객체지향의 사실과 오해
에서 중요하게 다루는 내용 중 하나로
'각 객체간의 책임과 역할을 명확히 하라' 라는 이야기를 강조한다.
-
클라이언트로부터 넘어오는 데이터에 대한 검증은 컨트롤러에게 책임이 있다.
-
검증로직이 서비스의 핵심로직으로 넘어가면 서비스로직이 오염된다.
각 계층의 역할이 확실히 구분되지 않는 현상이 발생한다.
-
따라서 검증 로직을 컨트롤러에서 처리하도록 리팩토링 하자.
#리팩토링
이미지 파일 여부 검증
-
-
GalleryController
@PostMapping("/gallery/create")
public String PCreateGallery(@RequestParam("file") List<MultipartFile> files,
@RequestParam("title") String title) throws IOException {
galleryService.upload(files, "galleryImages", title);
return "redirect:/gallery";
}
GalleryService
public void upload(List<MultipartFile> multipartFiles, String dirName, String title) throws IOException {
User loginUser = userService.getLoginUser();
for (MultipartFile uploadFile : files) {
if (uploadFile.getContentType().startsWith("image") == false) {
throw new CFileIsNotImageException();
}
}
List<File> convertFiles = convert(multipartFiles);
List<String> uploadImageUrls = uploadToS3(convertFiles, dirName);
...
}
...
-
서비스 로직에서 파일들이 이미지 파일인지 아닌지 검증하고 있다.
-
해당 검증을 컨트롤러에서 수행하도록 하자.
GalleryController
@PostMapping("/gallerys")
public String PCreateGallery(@RequestParam("file") List<MultipartFile> files,
@RequestParam("title") String title) throws IOException {
for (MultipartFile uploadFile : files) {
if (uploadFile.getContentType().startsWith("image") == false) {
throw new CFileIsNotImageException();
}
}
galleryService.upload(files, "galleryImages", title);
return "redirect:/gallerys";
}
GalleryService
public void upload(List<MultipartFile> multipartFiles, String dirName, String title) throws IOException {
User loginUser = userService.getLoginUser();
List<File> convertFiles = convert(multipartFiles);
List<String> uploadImageUrls = uploadToS3(convertFiles, dirName);
...
}
...
- 클라이언트로부터 전달된 데이터의 검증을 컨트롤러에서 처리하면서
서비스 로직이 깔끔해졌다.
💡 나머지 도메인에서도 위와 같이 리팩토링을 진행했으며, 대표적으로 하나의 케이스만 가져왔다.
Author And Source
이 문제에 관하여(객체간의 책임과 역할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@znftm97/리팩토링-객체간의-책임과-역할
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
객체지향의 사실과 오해
에서 중요하게 다루는 내용 중 하나로
'각 객체간의 책임과 역할을 명확히 하라' 라는 이야기를 강조한다.
클라이언트로부터 넘어오는 데이터에 대한 검증은 컨트롤러에게 책임이 있다.
검증로직이 서비스의 핵심로직으로 넘어가면 서비스로직이 오염된다.
각 계층의 역할이 확실히 구분되지 않는 현상이 발생한다.
따라서 검증 로직을 컨트롤러에서 처리하도록 리팩토링 하자.
이미지 파일 여부 검증
-
GalleryController
@PostMapping("/gallery/create")
public String PCreateGallery(@RequestParam("file") List<MultipartFile> files,
@RequestParam("title") String title) throws IOException {
galleryService.upload(files, "galleryImages", title);
return "redirect:/gallery";
}
GalleryService
public void upload(List<MultipartFile> multipartFiles, String dirName, String title) throws IOException {
User loginUser = userService.getLoginUser();
for (MultipartFile uploadFile : files) {
if (uploadFile.getContentType().startsWith("image") == false) {
throw new CFileIsNotImageException();
}
}
List<File> convertFiles = convert(multipartFiles);
List<String> uploadImageUrls = uploadToS3(convertFiles, dirName);
...
}
...
-
서비스 로직에서 파일들이 이미지 파일인지 아닌지 검증하고 있다.
-
해당 검증을 컨트롤러에서 수행하도록 하자.
GalleryController
@PostMapping("/gallerys")
public String PCreateGallery(@RequestParam("file") List<MultipartFile> files,
@RequestParam("title") String title) throws IOException {
for (MultipartFile uploadFile : files) {
if (uploadFile.getContentType().startsWith("image") == false) {
throw new CFileIsNotImageException();
}
}
galleryService.upload(files, "galleryImages", title);
return "redirect:/gallerys";
}
GalleryService
public void upload(List<MultipartFile> multipartFiles, String dirName, String title) throws IOException {
User loginUser = userService.getLoginUser();
List<File> convertFiles = convert(multipartFiles);
List<String> uploadImageUrls = uploadToS3(convertFiles, dirName);
...
}
...
- 클라이언트로부터 전달된 데이터의 검증을 컨트롤러에서 처리하면서
서비스 로직이 깔끔해졌다.
Author And Source
이 문제에 관하여(객체간의 책임과 역할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@znftm97/리팩토링-객체간의-책임과-역할저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)