DTO 6

spring boot No serializer found for class 오류

No serializer found for class 오류 프로젝트를 하던 중에 만난 문제인데, 쓸데없이 시간을 자꾸 낭비하게 되어 기록하게 되었다. A의 값을 가져올 때에 A_DTO, B_DTO 이런 식으로 여러 DTO들을 통해 값을 가져오는데 자꾸 No serializer found 에러가 났다. 아니 근데 DTO를 써주고 있는데 직렬화 문제가 왜 나는거지...? 싶었는데 1시간동안 삽질하다가 간단한 문제를 발견했다. 이런 느낌으로 에러가 있을 때에 결국 실제 문제는 tagMemeDetailResponses쪽에서 난건데...? 하고 보았는데 @Getter가 설정이 안돼있었다 그러니까 DTO를 쓸때에 혹시라고 seriablizer 에러가 나면 사용하는 모든 DTO를 확인하면서 @Getter 어노테이션이..

DTO랑 VO의 차이

근데 진짜 DTO랑 VO이거 개발할때 잘 구분 안함... DTO Data Transfer Object 데이터를 전달하기 위해 사용하는 객체이다. 데이터를 주고받을 때에 사용하는 녀석이라 생각하면 편하다. 구체적으로 표현하자면 "계층 간" 데이터 전달을 위해 사용되는 것이 DTO이다. 예를 들어 Controller Service 와 같이 서로 다른 계층 간에 데이터를 전달할 때에 쓰인다. 이 DTO의 특징으로는 오직 getter/setter메서드만을 가진다. 찐으로 getter/setter만 갖는게 아니라 데이터 세팅이랑 읽는것만 가능하다는거다. setter는 어지간하면 쓰지 말자구요 걍 불변객체 가자 로직을 갖지 않는다. 왜냐면 얘는 데이터 전달만을 위한 객체이기 때문이다. VO Value Object ..

카테고리 없음 2022.11.01

lucy필터로 xss 방어하기(feat JSON, time, 이모지)

서비스를 실제로 운영할 때에 공격이 들어올 수 있고, 이를 막기 위해 노력해야 한다. 디프만에서 우리는 모든 DB통신을 JPA와 querydsl을 통해 진행했기 때문에 SQL injection은 막을 수 있었다. 그러나 XSS의 경우는 추가적인 방어가 필요했다. 이를 위해 lucy filter를 도입하였고, 우리 프로젝트에 맞춰 추가적인 기능을 부여하며 여러 테스트를 해 보았다. lucy필터의 장점 https://github.com/naver/lucy-xss-filter 네이버에서 만든 XSS 방어용 필터이다. 이를 사용하면 XML설정만으로 XSS방어가 가능해진다. 비지니스 레이어의 코드 수정이 필요하지 않다. 직접 설정할 필요가 없으므로 코드를 잘못 입력하거나, 놓치고 적용하지 않는 경우가 없다. lu..

Spring boot를 통한 REST API구현 - 이론(3)

Spring boot로 간단한 rest api를 구현하여 보자!! Spring boot를 통한 REST API의 구현 - 실습(3)에 관한 이론과 내용들에 관한 글이다. 관련 내용 1. Lombok 개념 Lombok이란, 반복해서 사용되는 Annotation을 하나로 묶어서 자동으로 작성해주는 라이브러리이다. 자주 쓰이는 내용들을 한꺼번에 적용할 수 있고 긴 코드를 줄여주기 때문에 생산성에 큰 도움이 되지만, 생각보다 큰 단점이 존재한다. 이 단점에 관해서는 이후에 단점이 발생하게 되는 타이밍에 다시 적겠다. 이게 꼭 그 상황이 터져야 비로소 이해하게 되는 것 같다. 사용 @Data @Getter / @Setter / @ToString / @EqualsAndHashCode / @RequiredArgsCo..

Entity, DTO의 차이와 사용 이유, 개념

Entity, DTO가 뭐지? 분리해서 쓰라고? 개인적으로 생각할 때에 처음 Spring boot를 배울 때 가장 개념이 잡히지 않는 것들 중 하나가 DTO, Entity일 것이라 생각한다. 특히 처음에 볼 때는 걍 Entity를 쓰니까 다 되는데 왜 굳이 이거 두개를 나누지? 라는 생각을 할 수도 있을 것이라 생각한다. 이 글에서는 이 두 가지의 간단한 개념과 나누는 이유, 사용 방법에 대해 기술한다. Entity란? Entity란 DB의 테이블에 존재하는 Column을 필드로 갖는 객체이다. 여기서 중요한 점은 DB테이블과 관련이 있다는 점이다. 즉, Entity는 DB테이블과 소통하는 데에 사용하는 것이다. DTO란? Data Transfer Object라는 뜻이다. DTO는 계층 간 데이터 교환을..

이론 정리/java 2022.02.28

Mapstruct사용 이유 및 장단점. 사용 방법에 대한 사용 예제

Mapstruct 클래스 간 변환을 위해 사용하는 라이브러리 Mapstruct를 사용하면 Entity - DTO 간 매핑을 쉽게 해줄 수 있다. Mapstruct의 장점 -> ModelMapper와 비교하여 ModelMapper와 달리 Reflection API를 사용하지 않는다. 컴파일시 미리 구현체를 만들고, 이를 사용해 Mapping한다. = 처리속도가 훨씬 빠르다. Mapstruct는 10^(-5)m/s, ModelMapper는 2*10^(-3)m/s 컴파일 시 오류를 바로 확인 가능하고 디버깅이 원할하다. 사용하기 Entity정의 먼저 Entity는 내가 올릴 게시글에 관한 내용이다. 글의 ID 글의 제목 글의 내용 작성자 정보@Entity @Data public class Board { @Id..