Form 태그를 get과 post만 지원한다.
데브코스를 들으며 logback.xml을 작성하여 커스텀 로거를 만들 수 있다는 것을 알게 되었다. 하지만 다음과 같은 문제 상황을 만났다.
당연한 상황이다. 커스텀 로거를 설정했다면 분명히 패키지 범위(name)와 로깅 레벨(level)을 설정 하엿을 것이다. 해당 패키지 범위에 따라 로깅 레벨이 오버라이드 되므로 root 로거에서 설정한 내용은 커스텀 로거 범위에서는 무시된다.
Jackson 직렬화(object to json)할 때 getter 사용
Jackson 역질렬화(json to object)할 때 기본 생성자와 setter 사용
Object Mapper
Json to object
Object Mapper는 아래 방법들을 통해 property 명을 찾아 값을 주입시킨다.
기본 생성자 없이 역질력화(json to object)
ObjectMapper 내부에는 속성과 생성자가 어노테이션을 사용해 객체를 변환할 때 쓰일 정보를 직접 지정한 경우 그 정보를 이용해서 직렬화/역직렬화에 사용하는 로직이 있다. @JsonProperty
, @JsonAutoDetect
, @JsonCreator
어노테이션이 작성되면 생성자와 property값이 위임돼 getter, setter, 기본생성자 없이도 jackson이 정상적으로 작동한다.
jackson-datatype-jdk8이 자동으로 기본생성자가 없으면 다른 생성자를 이용하도록하는 모듈을 ObjectMapper에 등록시켜준다.
단, 생성자 인자가 하나일 경우 @JsonCreater 선언해줘야 한다.
class ReqDto {
private int a;
@JsonCreator
public ReqDto(@JsonProperty("a") int a) {…}
}