Spring/SpringMVC

    UriComponentsBuilder, ServletUriComponentsBuilder, 201 URI 생성

    URI의 개념과 UriComponentsBuilder의 필요성 인터넷상에 존재하는 모든 자원(Resource)은 URI를 이용하여 그 위치를 나타낸다. 아래와 같이 다양한 구성요소로 이루어진 URI를 개발자가 직접 문자열로 작성하는 것은 상당히 불편한데, scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment] Scheme UserInfo Host Port Path Query Fragment 스프링에서는 URI를 보다 쉽게 다룰 수 있도록 도와주는 UriComponentsBuilder를 제공한다. UriComponents 클래스 UriComponents 클래스는 말 그대로, URI를 구성하는 Components들을 효과적으로 다룰 수 있도록 ..

    Spring consumes와 produces

    Spring consumes와 produces API의 URI를 Mapping할 때 서버에서 수신하는 데이터와 송신하는 데이터 타입을 강제함으로써 오류 상황을 줄일 수 있다. @RequestMapping의 produces 속성을 이용하여 Response의 Content-Type을 제어할 수 있다. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 등도 지원한다. @Consumes : 수신 하고자하는 데이터 포맷을 정의한다. - 수신 데이터 제한 Cosumes는 클라이언트가 서버에게 보내는 데이터 타입을 명시 @Produces : 응답(출력)하고자 하는 데이터 포맷을 정의한다. - 응답 데이터 제한 Produces는 서버가 클라이언트에게 반환하는 데이터 타입..

    Custom Bean Validation (Custom Validation)

    Spring MVC Custom Validation 사용 가능한 constraint 어노테이션이 제공하는 제약 조건 외에 필요한 경우, 직접 만들어서 사용할 수 있다. 임의의 제약(Constraint)과 검증자(Validator)를 구현하여 사용하면 된다. CustomValidation을 위한 Annotation을 생성한다. @Documented @Constraint(validatedBy = ContactNumberValidator.class) @Target( { ElementType.METHOD, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) public @interface ContactNumberConstraint { String message(..

    Java Bean Validation + Validation Tip

    Java Bean Validation + Validation Tip 추천 레퍼런스 페이지 Bean Validation이란? 특정 구현체가 아닌 Bean Validation 2.0(JSR-380)이라는 기술 표준으로 여러 검증 애노테이션과 여러 인터페이스의 모음이다. Spring Boot 3.0.0 M1 릴리스 노트 에서 Spring Boot 2.X는 Jakarta EE를 지원하지 않지만 Spring Boot 3.X에서는 지원이 제공된다. Spring Boot 2.X의 경우 javax. Spring Boot 3.X의 경우 jakarta. 를 사용해야 한다. Bean Validation을 구현한 기술중 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. (이름이 하이버네이트지만 ORM과는 관련없..

    Bean Validation Annotation 종류

    Bean Validation이란? 특정 구현체가 아닌 Bean Validation 2.0(JSR-380)이라는 기술 표준으로 여러 검증 애노테이션과 여러 인터페이스의 모음이다. javax.validation 패키지였지만 현재는 jakarta.validation 패키지이다. Jakarta Bean Validation 2.0 - Java 8 이상 Jakarta Bean Validation 3.0 - Java 11 이상 Spring Boot 3.0.0 M1 릴리스 노트 에서 Spring Boot 2.X는 Jakarta EE를 지원하지 않지만 Spring Boot 3.X에서는 지원이 제공된다. Spring Boot 2.X의 경우 javax. Spring Boot 3.X의 경우 jakarta. 를 사용해야 한다...

    Spring MVC의 기본 요청 처리 방식 - Thread Per Request Model

    Thread Per Request Model이란, 1개의 Request당 1개의 쓰레드를 사용하는 웹 요청 처리 모델이다 일반적으로 Spring Web MVC를 사용하면, 1개의 요청에 1개의 쓰레드를 사용하게 되고, Controller, Service, Repository, 도메인 모델 어디에서든 같은 쓰레드를 사용하게 된다. event Loop 모델과는 다르다 1요청당 1쓰레드를 사용하기 때문에 Spring MVC에서는 ThreadLocal을 이용하여 MVC 전역에서 다양한 처리들을 할 수 있다. 사용자 인증정보 전파 - Spring Security에서는 ThreadLocal을 이용해서 사용자 인증 정보를 전파한다. - SecurityContext 트랜잭션 컨텍스트 전파 - 트랜잭션 매니저는 트랜잭션..