annotation
[Spring] Controller에서 사용하는 애너테이션
[Spring] Controller에서 사용하는 애너테이션
2019.09.25@ModelAttribute / @RequestBody 애너테이션은 웬만하면 붙여주는 편이 명확하다. @ModelAttribute를 명시하지 않아도 자동으로 URL 파라미터를 객체로 매핑해주고, GET은 관례적으로 URL 파라미터로 데이터를 전달하기 때문에, 굳이 @ModelAttribute를 사용해야 하느냐 라고 생각할 수 있는데 Controller에서 GetMapping 메서드는 사실 (URL 파라미터/HTTP 바디) 양 쪽 모두 데이터를 받을 수 있다. https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Summary_table 보면, GET의 경우 Request has Body가 No가 아니라 Optional로 되어 있다. POST, PUT도 마..
[Spring] annotation : bean constraints, validation
[Spring] annotation : bean constraints, validation
2019.07.11beanvalidation.org/2.0/spec/#builtinconstraints https://www.baeldung.com/javax-validation @Size, @Past, @Min(1) @Pattern 등 애너테이션이 어떤 제약조건을 가지고 있는지 확인하려면 그냥 애너테이션 소스 확인해보면 된다. 참고로 `` @Email`` 애너테이션은 길이 제한도 겸하고 있다. `` {64}@{255}`` DB에 저장할 때도 VARCHAR2(320)으로 하면 깔끔하다. controller에서 data class 받으면서 한 번에 조건 체크 ```java @AssertTrue(message = "허용된 리스트 목록에 없는 코드") private boolean isInAllowList() { return !..
[Spring] annotation : lombok, builder
[Spring] annotation : lombok, builder
2019.07.10@Data https://projectlombok.org/features/Data ``kt @Data = RequiredArgsConstructor + ToString + EqualsAndHashCode + Getter + Setter`` ``kt lombok.noArgsConstructor.extraPrivate=true`` 이면 private NoArgsConstructor 까지 붙는다. (1.16.22에서는 기본으로 활성화) 단, 필드 final 아닐 때 여기서 `` RequiredArgsConstructor``는 다른 Constructor 애너테이션이나 명시적으로 선언된 Constructor가 없을 때만 붙는다. callSuper를 설정해야 하는 경우 해당 애너테이션과 Data를 함께 써도 된다...
[Java] Jackson ObjectMapper Serialization
[Java] Jackson ObjectMapper Serialization
2019.05.15ObjectMapper Configuration SpringBoot가 생성 및 제공하는 ObjectMapper Bean / configuration Spring Boot가 default ObjectMapper Bean 생성 할 때 관여하는 클래스는 `` JacksonAutoConfiguration, Jackson2ObjectMapperBuilder``이므로, 이 두 클래스를 참고하면 기본 설정을 알아낼 수 있다. 역할 org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration -> application.yml의 spring.jackson... 설정 적용. org.springframework.http.converter.json.Jacks..