[Clone Coding] 인스타그램 - Service & Controller(7)

Cho Doil·2023년 2월 7일

clone-coding

목록 보기
7/7

Service 구현

이전에 회원가입을 구현한다고 join 기능까진 만들었다. 하지만 유효성 검사나 보안 설정 때문에 다른 기능은 전혀 구현하지 못했다.
로그인도 가능하게 만들었으니 이젠 여러 기능 구현을 해보자. 그리고 중간 중간 필요한 DTO도 구현해야겠다.

  • UserService:
    Join 기능은 UserSignupDto를 받아 Repo의 save로 넘겼다.
    Update 기능은 UserUpdateDto를 받아서 정보를 업데이트 시키고 MultipartFile를 받아 프로필 파일을 업로드 시킨다. Security로 로그인이 되어 있어서 principalDetails로 세션을 업데이트 시킨다.
    마지막 기능으로 UserProfileDto를 서비스에서 넘겨준다. Repo에서 넘기고 싶은 마음이긴 하지만 Repo는 JPA Repo를 확장한 인터페이스이다 보니 서비스에서 넘기는 것이 아닐까 생각해 본다.
  • PostService:
    upload, getPostInfoDto, getPostDto, update, delete, getPost, getTagPost, getLikesPost, getPopularPost
    총 9개의 기능을 구현했다.
    Post 기능을 구현하면서 유효성 검사가 필요해 에러 메시지 스크립트를 작성하고 유효성 검사도 구현해줬다.

  • LikesService:
    likes, unlikes 기능을 구현했다.

  • CommentService:
    addComment, deleteComment 기능을 구현했다.
  • FollowService:
    follow, unfollow, getFollower, getFollowing 기능을 구현했다.

Controller 구현

딱히 크게 언급할 것이 없다.
그냥 페이지 이동이나 필요에 맞는 DTO나 Param를 받아서 적당한 service를 사용하면 되기 때문이다.

마찬가지로 API controller도 구현했다.

마지막으로

컨트롤러 구현까지 하고나서 로컬 환경에서 돌려봤지만 알 수 없는 서블릿 에러가 생겨서 몇몇 기능이 제대로 되지 않았다... 열심히 찾아 봤지만 알 수 없었다.. 본인의 지식이 부족한 탓이기 때문에 나중에 지식을 더 쌓고 다시 돌아와 완벽하게 마무리하겠다.
그렇다고 다른 개발을 멈추고 이 하나를 위해 시간을 계속 사용하기엔 개발하고 싶은 것들이 너무 많다. 일단 이 경험으로도 개발이 가능한 정도의 간단한 웹을 개발해보고자 한다. 혼자서 하는 것이기 때문에 부족한 부분도 많을 것이고 시간도 오래 걸릴 것이다. 하지만 요구사항부터 데베 설계 그리고 개발까지 혼자서라도 경험하고 싶다. (물론 프론트 쪽은 지식이 많이 부족하기에 html과 thymeleaf만 사용된 텍스트 위주의 개발이 될 것이다.)
팀 프로젝트도 하고 싶지만 아무것도 모르는 상태에서는 민폐만 끼칠 것 같기에 혼자서 먼저 해보고자 한다. 혼자하면서 많은 고민도 해보고 왜 이걸 선택했는지 타당성도 생각해보며 천천히 해보며 프로젝트를 완성시킬 생각이다.

찐막으로 본인의 깃허브 주소를 남기겠다.
https://github.com/jjdone/clonecoding-instagram

profile
초보 개발자의 저장소

0개의 댓글