목록스프링/지식 (7)
임대일
1. 배경오늘날 회원 가입에서 휴대전화번호 혹은 이메일 인증 그리고 서드 파티 애플리케이션 인증을 흔하게 볼 수 있다. [회원, 인증] 도메인 담당한 경험이 있다면 언급한 세 가지 인증 수단 중에서 한 가지를 공부하거나 구현한 경험이 있을 것이라고 생각이 든다. 가장 흔한 인증 방식인 서드 파티 애플리케이션을 활용한 로그인 방식은 책 혹은 강의에서 흔하게 공부할 수 있다. 대표적인 서드 파티 애플리케이션은 카카오톡 인증 서비스가 있다. 스마트폰 앱과 웹 페이지 모두 제공해야 하는 서비스에서 서드 파티 애플리케이션 인증은 무상태(Stateless)를 준수하기 위한 최소한의 환경이기 때문에 탁월한 선택이라고 생각이 든다.(지금까지 경험으로 Stateless를 완벽하게 만족하는 것은 어려운 것으로 보인다.) ..
1. 유효성 검사 시점DTO 레코드 타입을 작성하다가 유효성 검사를 어느 시점에 수행해야 가장 최적인지 고민하면서 공부한 내용을 정리한 글이다. 좀 더 구체적인 고민하게 된 배경을 살펴보고 유효성 검사에 대표적인 어노테이션들에 대해 학습한다. 클라이언트가 회원 가입에 필요한 정보를 포함하여 서버로 요청을 보내는 시나리오에서 생긴 고민이다. 해당 시나리오의 프로젝트는 계층형 아키텍처(Layerd Architecture) 구조로 Controller, Service, Repository, Model로 구성되어 있다. 이러한 계층형 아키텍처 구조에서 클라이언트로부터 받은 요청 데이터에 대해 유효성 검사를 어느 시점에, 어떻게 작성해야 가장 적절한지 고민하게 됐다. 2. DTO와 Service에서 유효성 검사결론..
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..
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)은 네트워크 통신을 가능하게 하는 인터페이스..
1. 프레임워크프레임워크(Framework)는 소프트웨어 혹은 애플리케이션 개발을 간단하게 해주는 뼈대이다. 프레임워크 장점개발에 필요한 최소한의 기능 제공한다.애플리케이션 개발에 필요한 시간과 비용을 최소화할 수 있다.프레임워크 단점프레임워크 고유의 사용 방법에 대한 이해가 필요하다. 프레임워크와 라이브러리의 정의 프레임워크와 라이브러리는 소프트웨어 개발을 돕는 도구이다. 라이브러리는 특정 기능을 수행하는 코드의 집합으로, 개발자가 필요에 따라 선택적으로 사용할 수 있다. 반면, 프레임워크는 애플리케이션의 뼈대 또는 틀을 제공하며, 개발을 위한 기본적인 형태와 필수 요소를 포함하고 있다. 개발자는 프레임워크가 정한 규칙과 구조 내에서 개발을 진행해야 한다. 2. 스프링 프레임워크스프링 프레임워크(S..
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...
배경@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)를 수행하는 시나리오를 생각하고 구현을 목표로 정했다. 하지만 생각과 다르게 스프링에서 제공되는 기본적인 에러 메시지를 응답하거나 응답 형식 혹은 메시지가 원하는 형식이 전혀 아니었..