개인 정리9 스프링(Spring): 스프링 부트로 이메일 인증 구현하기(feat. docker, redis, SMTP, IMAP, POP3) 1. 배경오늘날 회원 가입에서 휴대전화번호 혹은 이메일 인증 그리고 서드 파티 애플리케이션 인증을 흔하게 볼 수 있다. [회원, 인증] 도메인 담당한 경험이 있다면 언급한 세 가지 인증 수단 중에서 한 가지를 공부하거나 구현한 경험이 있을 것이라고 생각이 든다. 가장 흔한 인증 방식인 서드 파티 애플리케이션을 활용한 로그인 방식은 책 혹은 강의에서 흔하게 공부할 수 있다. 대표적인 서드 파티 애플리케이션은 카카오톡 인증 서비스가 있다. 스마트폰 앱과 웹 페이지 모두 제공해야 하는 서비스에서 서드 파티 애플리케이션 인증은 무상태(Stateless)를 준수하기 위한 최소한의 환경이기 때문에 탁월한 선택이라고 생각이 든다.(지금까지 경험으로 Stateless를 완벽하게 만족하는 것은 어려운 것으로 보인다.) .. 개인 정리 2024. 8. 6. 스프링(Spring) DTO, Service에서 유효성 검사: @NotBlank, @Pattern, @Size(feat. Validation, @Email, @NotEmpty) 1. 유효성 검사 시점DTO 레코드 타입을 작성하다가 유효성 검사를 어느 시점에 수행해야 가장 최적인지 고민하면서 공부한 내용을 정리한 글이다. 좀 더 구체적인 고민하게 된 배경을 살펴보고 유효성 검사에 대표적인 어노테이션들에 대해 학습한다. 클라이언트가 회원 가입에 필요한 정보를 포함하여 서버로 요청을 보내는 시나리오에서 생긴 고민이다. 해당 시나리오의 프로젝트는 계층형 아키텍처(Layerd Architecture) 구조로 Controller, Service, Repository, Model로 구성되어 있다. 이러한 계층형 아키텍처 구조에서 클라이언트로부터 받은 요청 데이터에 대해 유효성 검사를 어느 시점에, 어떻게 작성해야 가장 적절한지 고민하게 됐다. 2. DTO와 Service에서 유효성 검사결론.. 개인 정리 2024. 7. 31. 스프링(Spring): 스프링 부트에서 웹 소켓(Spring Framework Web Socket) Getting Started | Using WebSocket to build an interactive web applicationIn Spring’s approach to working with STOMP messaging, STOMP messages can be routed to @Controller classes. For example, the GreetingController (from src/main/java/com/example/messagingstompwebsocket/GreetingController.java) is mapped to handle messages tspring.io Spring Framework Web Socket스프링에서는 Web Socket API 를 제공하여 WebSo.. 개인 정리 2024. 7. 10. 스프링(Spring): 소켓(Socket), 웹소켓(Web Socket) 이론 RFC 147: Definition of a socket datatracker.ietf.org RFC 6455: The WebSocket ProtocolThe WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security modedatatracker.ietf.org 소켓소켓(Socket)은 네트워크 통신을 가능하게 하는 인터페이스.. 개인 정리 2024. 7. 10. 스프링(Spring): 스프링 프레임워크, 의존성 주입, @Component, @Autowired, 어노테이션, AOP, 메타 어노테이션 1. 프레임워크프레임워크(Framework)는 소프트웨어 혹은 애플리케이션 개발을 간단하게 해주는 뼈대이다. 프레임워크 장점개발에 필요한 최소한의 기능 제공한다.애플리케이션 개발에 필요한 시간과 비용을 최소화할 수 있다.프레임워크 단점프레임워크 고유의 사용 방법에 대한 이해가 필요하다. 프레임워크와 라이브러리의 정의 프레임워크와 라이브러리는 소프트웨어 개발을 돕는 도구이다. 라이브러리는 특정 기능을 수행하는 코드의 집합으로, 개발자가 필요에 따라 선택적으로 사용할 수 있다. 반면, 프레임워크는 애플리케이션의 뼈대 또는 틀을 제공하며, 개발을 위한 기본적인 형태와 필수 요소를 포함하고 있다. 개발자는 프레임워크가 정한 규칙과 구조 내에서 개발을 진행해야 한다. 2. 스프링 프레임워크스프링 프레임워크(S.. 개인 정리 2024. 7. 8. JPQL, Spring Data JPA, QueryDSL: 데이터베이스 CRUD 고르기 1. JPQLJPQL(Java Persistence Query Language)은 JPA에서 사용하는 객체 지향 쿼리 언어로, SQL과 유사하지만 엔티티 객체를 대상으로 쿼리를 작성한다. JPQL 특징SQL과 유사하지만, 데이터베이스 테이블이 아니라 엔티티 객체를 대상으로 쿼리 수행JPQL 을 사용하면 엔티티 객체의 속성, 관계 등을 이용하여 복잡한 쿼리를 작성이 가능JPQL 은 EntityManager 를 사용하여 실행예: SELECT m FROM Member m WHERE m.name = :nameString jpql = "SELECT m FROM Member m WHERE m.name = :name";List members = entityManager.createQuery(jpql, Member... 개인 정리 2024. 7. 5. @Pattern: message 으로 클라이언트에게 응답하기(feat. JSON) 배경@NotBlank(message = "비밀번호: 필수 정보입니다.")@Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,20}" , message = "비밀번호: 8~20자 영문 대소문자, 숫자, 특수문자를 조합하여 작성해야 합니다.")@Size(min = 8, max = 20)private final String password클라이언트로부터 회원가입 데이터가 올바르게 입력 됐는지 @Pattern 으로 필드마다 유효성 검사(@Vaild)를 수행하는 시나리오를 생각하고 구현을 목표로 정했다. 하지만 생각과 다르게 스프링에서 제공되는 기본적인 에러 메시지를 응답하거나 응답 형식 혹은 메시지가 원하는 형식이 전혀 아니었.. 개인 정리 2024. 5. 18. [Spring] Spring Boot 멀티 모듈 어플리케이션 설정: Gradle, DDD 도메인 주도 설계에서 모듈 구조를 설계할 때에는 각 도메인이나 하위 도메인에 따라 모듈을 구분하는 것이 중요합니다. 예를 들어 블로그 포스트 관리 시스템의 경우, 주요 도메인은 아마도 "포스트(Post)"일 것입니다. 따라서 도메인을 기준으로 모듈 구조를 설계할 수 있습니다. 1. 도메인(Domain)도메인의 사전적 의미는 도메인(domain)이란 단어는 영토, 분야, 영역, 범위를 뜻하는 단어(예를 들어 소유지, 토지 소유권(법률) 등)였으나 인터넷 주소의 의미로 확장되었다. 어떤 전문 분야에 대해 얘기할 때 해당 도메인에 대한 지식이 필요하다와 같이 말하기도 한다. 흔히 프로그래머들에게는 "어플리케이션 내에서 로직들의 정보 영역 혹은 범위" 에 해당한다. 또한 " 소프트웨어로 해결해야할 문제의 영.. 개인 정리 2024. 4. 28. Spring Boot Junit5 이해하기: @WebMvcTest, @SpringBootTest Spring Boot Junit5 이해하기: @WebMvcTest, @SpringBootTest스프링 부트에서 Junit 라이브러리로 테스트 코드를 작성할 때 @WebMvcTest, @SpringBootTest 어노테이션 두 가지를 가장 많이 사용합니다. 이번 장에서는 @WebMvcTest, @SpringBootTest 두 어노테이션의 차이점에 대해 학습합니다.1. Mock, MockMvcMock실제 객체를 만들기엔 비용과 시간이 많이 들거나 의존성이 길게 걸쳐져 있어 제대로 구현하기 어려울 경우, 가짜 객체를 만들어 사용하는데 이것을 Mock 이라 한다. 따라서 Mock 은 테스트할 때 필요한 실제 객체와 동일한 모의 객체를 만들어 테스트의 효용성을 높이기 위해 사용한다.MockMvcMVC에 관련된 M.. 개인 정리 2024. 4. 13. 이전 1 다음