분류 전체보기(238)
-
[유효성검증 #3] 유효성 검증 아키텍처 설계
전체 아키텍처 흐름도 이미지 Spring AOP 기반 유효성 검증 처리 구조 정리Spring에서 DTO 유효성 검증을 처리할 때, 기본 제공되는 BeanValidation만으로는 부족한 경우가 있다.이럴 때 커스텀 Validator를 추가로 적용할 수 있도록 구조를 설계하며, 두 가지 방식을 함께 활용한다.✅ BeanValidation + CustomValidation을 함께 사용하도록 구성한다.✅ 유효성 검증을 AOP로 감싸 공통 포맷으로 처리하도록 만든다.✅ 어노테이션(@CustomValidate)을 통해 자동으로 Validator를 스캔하고 매핑한다. 전체 흐름 개요Controller (with @CheckValidation) ↓ValidationAspect (AOP) ├─ B..
2025.06.09 -
[유효성검증 #2] Bean Validation를 이용한 유효성 검증
Spring Bean Validation과 커스텀 어노테이션 Spring Boot에서 사용자 입력값을 검증할 때 가장 많이 사용하는 방식은 Bean Validation이다. 간단한 유효성 조건은 어노테이션 한 줄로 처리할 수 있고, 복잡한 로직이 필요한 경우에는 커스텀 유효성 어노테이션을 직접 만들어 적용할 수 있다.이 글에서는 Bean Validation의 기본 사용법과 함께 @PasswordValidate라는 커스텀 어노테이션을 만들어서 비밀번호 조건을 검사하는 과정을 정리해본다. 1. DTO에 유효성 어노테이션 적용public static class TestV2Dto { // spring bean validation (기본) @NotBlank private String name; ..
2025.06.06 -
[유효성검증 #1] Validator + BindingResult를 이용한 유효성 검증
Spring에서 Validator를 이용한 커스텀 유효성 검사와 BindingResult 활용Spring에서는 사용자 입력 값을 검증하기 위해 Bean Validation(JSR-380)을 많이 사용하지만, 더 복잡한 조건이 있거나 커스터마이징이 필요한 경우에는 org.springframework.validation.Validator를 직접 구현하여 사용할 수 있다. 이 포스팅에서는 Validator를 이용한 유효성 검사와 BindingResult를 통해 검증 결과를 처리하는 방법을 소개한다. 1. Validator 인터페이스 구현하기 Spring의 Validator 인터페이스는 두 가지 메서드를 구현해야 한다:supports(Class clazz): 이 Validator가 어떤 클래스 타입을 지원하는지..
2025.06.06 -
[트랜잭션 #1] @Transactional 프록시 생략으로 인한 Rollback 실패 사례
트랜잭션(Transaction) 실패 경험을 통한 내용 정리1.. 예외처리로인한 Transaction Proxy 실패2. self Call로 인한 @Transactional 실패 트랜잭션(Transaction) 개요스프링 프레임워크에서 트랜잭션은 ACID(원자성·일관성·격리성·지속성) 규칙을 따르며,하나의 처리 흐름이 모두 성공해야 커밋되고, 중간에 문제가 발생하면 전부 롤백되도록 보장주로 @Transactional 애노테이션을 통해 스프링 AOP 프록시가 트랜잭션 경계를 관리원자성(Atomicity): 작업 전체가 성공하거나, 하나라도 실패하면 모두 롤백일관성(Consistency): 트랜잭션 전후에 데이터베이스 일관성이 유지격리성(Isolation): 동시성 제어를 통해 트랜잭션 간 간섭을 방지지..
2025.04.30 -
[게임서버프로그래밍#6] 클라이언트-서버 구현을 위한 소켓 기초 정리
이 글에서는 소켓 통신의 기초부터, Blocking/Non-Blocking 구조, Winsock2 함수(ioctlsocket, getsockopt, select) 사용법, 클라이언트-서버 프로그램 기본 흐름까지 실제 코드 예제와 함께 설명한다. 소켓(Socket)이란 무엇인가소켓은 네트워크 연결을 제어하는 핸들이다.파일 핸들처럼 읽고 쓰기를 담당하지만 대상이 네트워크다. Blocking 통신 구조Blocking 통신은 소켓 함수 호출 시 완료될 때까지 대기하는 구조를 의미한다.* 클라이언트 Blocking 흐름socket() : 소켓 핸들 생성bind() : 클라이언트 포트 설정connect() : 서버 연결 (연결 완료될 때까지 대기)send() : 송신 버퍼에 데이터 저장 (버퍼가 꽉 차면..
2025.04.29 -
[File I/O #6] File이외의 I/O Stream 정리 (Object, Audio, Piped 등)
목차 1. Resource와 Stream I/O 이해2. Resource 구현체 이해하기3. InputStream/OutputStream 이해하기4. InputStreamReader, BufferedReader 이해하기5. Multipartfile 처리하기6. File 이외의 I/O stream 정리 File I/O #6 — 고급 입출력 스트림 정리 (Object, Audio, Piped 등) 1. ObjectInputStream / ObjectOutputStream객체를 바이트 형태로 저장하거나 다시 객체로 복원하는 데 사용됩니다.직렬화(Serialization)와 역직렬화(Deserialization) 기능을 제공하죠.// 객체 저장 (직렬화 - 바이트로 저장)ObjectOutputStream oo..
2025.04.20