일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코드트리
- 코드트리조별과제
- 김영한
- 오버라이딩
- JSON
- 싱글톤
- DI
- 참조변수
- 인터페이스
- html form
- 오블완
- 의존관계
- equals()
- 다형성
- 스프링컨테이너
- 프록시
- 서블릿
- fielderror
- 테스트코드
- 티스토리챌린지
- 백준
- ocp
- 추상클래스
- HttpServletResponse
- java
- 스프링
- http 메시지 컨버터
- objecterror
- 코딩테스트
- @configuration
- Today
- Total
목록전체 글 (158)
minOS
Bean Validation - groups동일한 모델 객체를 등록할 때와 수정할 때 각각 다르게 검증하는 방법을 알아보자.1) BeanValidation의 groups 기능을 사용한다. 2) Item을 직접 사용하지 않고, ItemSaveForm, ItemUpdateForm 같은 폼 전송을 위한 별도의 모델 객체를 만들 어서 사용한다. 1) BeanValidation의 groups 기능을 사용이런 문제를 해결하기 위해 Bean Validation은 groups라는 기능을 제공한다.예를 들어서 등록시에 검증할 기능과 수정시에 검증할 기능을 각각 그룹으로 나누어 적용할 수 있다. 저장용 groups 생성public interface SaveCheck {} 수정용 groups 생성public interfac..
오브젝트 오류Bean Validation에서 특정 필드( `FieldError` )가 아닌 해당 오브젝트 관련 오류( `ObjectError` )는 어떻게 처리할 수 있을까?`@ScriptAssert()` 를 사용하면 된다. @Data @ScriptAssert(lang = "javascript", script = "_this.price * _this.quantity >= 10000") public class Item {//...}실행해보면 정상 수행되는 것을 확인할 수 있다. 메시지 코드도 다음과 같이 생성된다. 메시지 코드`ScriptAssert.item``ScriptAssert`그런데 실제 사용해보면 제약이 많고 복잡하다. 그리고 실무에서는 검증 기능이 해당 객체의 범위를 넘어서는 경우들도 종종 등..
Bean Validation특정 필드에 대한 검증 로직은 대부분 빈 값인 지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다.검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; } 이런 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 Bean Va..
ch8-15 사용자 정의 예외 만들기- 개발자가 직접 예외 클래스를 정의할 수 있다.- 조상은 Exception과 RuntimeException중에서 선택public class CustomException extends Exception { // 1. 기본 생성자 public CustomException() { super(); } // 2. 메시지를 받는 생성자 public CustomException(String message) { super(message); }} ch8-17 예외 되던지기(Exception re-throwing)- 예외를 처리한 후에 다시 예외를 발생시키는 것- 호출한 메서드와 호출된 메서드 양쪽에서 처리하는..
Validator 분리1목표 :복잡한 검증 로직을 별도로 분리컨트롤러에서 검증 로직이 차지하는 부분은 매우 크다. 이런 경우 별도의 클래스로 역할을 분리하는 것이 좋다. 그리고 이렇게 분리한 검증 로직을 재사용할 수도 있다.스프링이 제공하는 Validator 인터페이스를 구현하려고 한다.public interface Validator { /** * Can this {@link Validator} {@link #validate(Object, Errors) validate} * instances of the supplied {@code clazz}? * This method is typically implemented like so: * return Foo.class.isAssignableFrom(c..
오류 코드와 메시지 처리1목표 :오류 메시지를 체계적으로 다루어보자.FieldError 생성자 두가지 public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) 파라미터 목록- objectName` : 오류가 발생한 객체 이름- field` : 오류 필드- rejectedValue` :..