프로젝트/아카이뷰
-
[Spring boot] Service와 ServiceImpl의 분리프로젝트/아카이뷰 2024. 1. 16. 21:22
Service와 ServiceImpl의 분리 왜 궁금했을까❓SSAFY 1학기 때, Service와 ServiceImple와 같이 구현체와 인터페이스를 나누어 구조를 설계하면 구현체를 독립적으로 확장할 수 있으며, 구현체 클래스를 변경하거나 확장해도 클라이언트의 코드에 영향을 주지 않아 다형성과 개방-폐쇄 원칙(OCP)을 지향하는 설계를 했다. ArchiVIEW의 경우 Service와 ServiceImpl이 1:1로 이루어져 굳이 분리해야 될까라는 의문이 들어 학습해 보려고 한다. Service와 ServiceImpl 분리하는 이유1. OOP의 다형성과 개방-폐쇄 원칙(OCP)위에서 언급했던 것처럼 Service와 ServiceImpl을 분리함으로써 구현체는 독립적이고 확장이 자유롭다.구현체의 클래스를 변..
-
[Spring boot] 유저 인증 처리프로젝트/아카이뷰 2024. 1. 15. 20:37
유저 인증 처리 왜 궁금했을까❓SSAFY 1학기에 Share Your Trip에서 유저를 인증하기 위해 이메일 인증 방식을 사용했다. 하지만, 악의적인 사용자가 비밀번호 변경 API를 알아낸 뒤 다른 사용자의 비밀번호를 변경하면 취약점이 발생할 것이라 생각이 들었다. 이를 해결하기 위해, 유저 인증 처리에 대해서 학습해보려고 한다.기존 이메일 인증 로직클라이언트가 비밀번호 변경을 위해 이메일 인증 요청서버는 인증번호를 생성하고 해당 클라이언트의 이메일로 메일 전송메일 전송 완료 후, 서버는 생성된 인증번호를 클라이언트에게 전송클라이언트는 자체 저장소(Redux, Recoil 등)에 저장하고 사용자가 입력한 값을 검증일치한다면 패스워드 변경 진행// 아이디, 패스워드 찾기용 이메일 인증 요청@GetMapp..
-
[Spring boot] JPA(Java Persistence API)프로젝트/아카이뷰 2024. 1. 13. 19:38
JPA(Java Persistence API) 왜 궁금했을까❓SSAFY 1학기 프로젝트인 Share Your Trip을 할 때, MyBatis를 사용해서 DB에 Query를 날리곤 했는데 타입이나 변수명 등 Java 객체와 불일치 하는 경우가 많아 오류가 많이 발생했다. 꼼꼼하게 확인하며 개발을 하면 문제가 없을 것이지만 짧은 시간안에 많은 작업들을 하다보니 놓치는 부분이 생기기 마련이였다. 이러한 부분을 보완할 수 있는 ORM 기술이 있다는 것을 확인하였고 그 중 JPA를 학습해보려고 한다. JPA란 ❓JPA는 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스 모음을 뜻한다. 실제적으로 구현된 것이 아닌 구현된 클래스와 매핑을 해주기 위해 사용되는 라이브러리이다. JPA를 구현한 오픈 소스로는 H..
-
[Spring boot] Error Handling프로젝트/아카이뷰 2024. 1. 10. 21:29
Error Handling 왜 궁금했을까 ❓- SSAFY 1학기 때, 프로젝트 마감 기한을 맞추기 위해 기능 완성에만 초점을 맞춰 개발을 진행하다보니 Client에게 보내는 응답에 대해 신경쓰지 못하였고 일관성이 없는 Error 응답을 전송하였다.- 이로 인해, Client의 입장에서는 어느 부분에서 Error가 발생했는 지 정확한 응답을 받지 못하고 일관되지 못한 Error 응답으로 인해 혼란을 야기할 수 있을 것이라 생각되었다.- 이러한 부분을 해결하기 위해, Error Handling에 대해 학습하고 일관된 Error 응답을 전송하여 앞선 문제를 해결해보고자 한다. Error HandlingBasicErrorControllerSpring은 에러 처리를 기본적으로 BasicErrorController..
-
[Spring boot] Common Response프로젝트/아카이뷰 2024. 1. 9. 21:52
Common Response 왜 궁금했을까❓- SSAFY 1학기 프로젝트에서 시간에 쫒겨 개발을 하다보니 기능 완성에만 집중하여 코드를 작성했다.- 그 결과, 일관되지 못한 REST API Response를 받아오게 되고 Client 입장에서 혼란을 야기할 것이라 생각되었다.- 이러한 문제점을 Common Response를 만들어 구조화 한다면 Client는 일관된 응답을 통해 일의 생산성과 안정성 측면이 향상될 것이라 생각되어 학습하고 Refactoring을 진행해보려 한다. Common Response이번 포스팅에서는 Success Response만 다루고 Error Response는 추후 포스팅에서 다루도록 하겠다.우선, Common Response를 만들기 위해서 응답 구조를 어떻게 구성할지 고..
-
[Spring boot] WebRTC프로젝트/아카이뷰 2024. 1. 8. 22:49
WebRTC 왜 궁금했을까❓- 팀 프로젝트로 WebRTC를 이용해서 취준생들을 위한 모의 면접 컨설팅 플랫폼을 기획했다.- 아직 기획만 나온 단계이지만 WebRTC를 사용해야만 하는 상황이어서 미리 학습해보려고 한다. WebRTC(Web Real-Time Communication) WebRTCAn open framework for the web that enables Real-Time Communications (RTC) capabilities in the browser.webrtc.org공식 문서에서 보면 WebRTC는 Android, IOS Application, Web에서 Plugin, Third Party 설치 없이 동영상, 음성, 일반 데이터를 앱끼리 통신할 수 있도록 도와주는 기술이라고 설명..
-
[Spring boot] @Builder 어노테이션프로젝트/아카이뷰 2024. 1. 5. 10:56
Builder 어노테이션 왜 궁금했을까 ❓- Spring boot 교재에서 Builder를 사용하고 Error Handling을 하기 위해 다른 사람들이 게시글을 참고하는 과정에서 대부분 Builder Annotiation을 사용하는 것을 발견했다.- 생성자가 존재함에도 불구하고 Builder Annotation을 쓰는 이유가 궁금했고 알아보려고 한다. @Builder Annotation@Builder Annotation은 lombok 라이브러리에서 지원하며 Builder Pattern으로 객체를 생성해주는 Annotation객체를 생성하는 여러 가지 방법에 대해서 알아보고 @Builder와 비교해보겠다. 생성자를 이용한 객체 생성public class Chanhong { private final ..
-
[Spring boot] @JsonInclude 어노테이션프로젝트/아카이뷰 2024. 1. 4. 15:35
JsonInclude 어노테이션이 왜 궁금했을까 ❓- Error Handling을 공부하는 과정에서 Validation이 발생한 필드와 메시지를 JSON 형식으로 클라이언트에게 내려주는 부분이 있었다.- 해당 부분에 @JsonInclude 어노테이션이 작성이 되어있어 알아보았다. @JsonInclude가 작성되어 있었던 코드 @JsonInclude(JsonInclude.Include.NON_EMPTY) private final List errors; @Getter @Builder @RequiredArgsConstructor public static class ValidationError { private final String field; private final String message; ..