본문 바로가기

스파르타 강의/스프링 강의

스프링 JWT 구현-2

지나번 글에서는 컨트롤러에 관한 설명으로 글이 끝났고 이번에는...

DTO 파트다. 계층 간의 데이터 교환 역할을 목적으로 사용되는 부분에 대한 설명이 된다.

 

 

 

 

 

 

LoginRequestDto

DB 에서 꺼낸 데이터를 저장하는 Entity를 통해 만들어지는 일종의 Wrapper(포장)
엔티티를 직접 클라이언트 단과 마주하는 계층에 전달하면 보안성에 위험이 있기 때문에(비밀번호 같은 중요 개인정보)
대신에 Dto 를 통해서 데이터를 교환해준다.
이 부분에서는 아래의 코드처럼 유저이름과 패스워드 만을 받아오기 위한 Dto 가 된다.

package com.sparta.myselectshop.dto;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class LoginRequestDto {
    private String username;
    private String password;
}

 

Lombok 이란 ?

자바에서 자주 사용되는 Getter, Setter 같은 어노테이션을 기반으로,
Dto, Vo, Domain Class 등을 작성할 때 멤버 변수에 대한 값을 설정하는 생성자들을 자동으로 생성해주는 라이브러리이다.

 

만약 위에서 롬복을 사용하지 않고 구현하면 ?

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

 

위와 같은 형태로 구현을 해야하는데 롬복을 사용해서 구현하면 엄청 짧고 간단하게 구현이 가능하다.

 

 

 

 

 

 

 

ProductMypriceRequestDto

이름 그대로 앞서 컨트롤러에서 봤던 개인 최저가 가격 설정 부분에서 사용된다.

package com.sparta.myselectshop.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor      // 파라미터가 없는 기본 생성자를 생성해준다.
@AllArgsConstructor     // 모든 필드 값을 파라미터로 받는 생성자를 만들어 준다.
public class ProductMypriceRequestDto {
    private int myprice;
}

 

위에서 간단하게 어노테이션에 대한 설명이 되어 있지만 아래의 글을 참고하면 더 좋다.

 

왜 @Entity에는 @AllArgsConstructor와 @NoArgsConstructor가 필요한가?

안녕하세요. 이번 글에서는 @Entity객체에 왜 @AllArgsConstructor와 @NoArgsConstructor가 필요한지 알아보고자 합니다. 일단, 두 어노테이션은 객체의 생성자를 만들어줍니다. 생성자의 정의는 위키피디아

pinokio0702.tistory.com

 

 

 

 

 

 

 

ProductRequestDto

관심 상품의 등록할 때 사용되는 Dto

package com.sparta.myselectshop.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class ProductRequestDto {
    // 관심상품명
    private String title;
    // 관심상품 썸네일 image URL
    private String image;
    // 관심상품 구매링크 URL
    private String link;
    // 관심상품의 최저가
    private int lprice;
}

 

 

 

 

 

 

 

ProductResponseDto

상품에 대한 필요한 정보만을 가져오기 위한 Dto

package com.sparta.myselectshop.dto;

import com.sparta.myselectshop.entity.Product;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class ProductResponseDto {
    private Long id;
    private String title;
    private String link;
    private String image;
    private int lprice;
    private int myprice;

    public ProductResponseDto(Product product) {
        this.id = product.getId();
        this.title = product.getTitle();
        this.link = product.getLink();
        this.image = product.getImage();
        this.lprice = product.getLprice();
        this.myprice = product.getMyprice();
    }
}

 

 

 

 

 

 

 

SignupRequestDto

회원가입의 진행시에 사용되는 Dto 이다.
여기에서 입력되는 정보를 바탕으로 회원가입을 진행한다.

package com.sparta.myselectshop.dto;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class SignupRequestDto {
    private String username;
    private String password;
    private String email;
    private boolean admin = false;
    private String adminToken = "";
}

 

Dto 부분은 이해하기에 있어서 어려운 부분이 없어서 사실상 기록으로만 남기는 정도로 끝내고

다음으로는 중요한 부분인 Entity 에 대해서 다뤄보자~

'스파르타 강의 > 스프링 강의' 카테고리의 다른 글

스프링 JWT 구현-5  (0) 2022.12.04
스프링 JWT 구현-4  (0) 2022.12.04
스프링 JWT 구현-3  (0) 2022.12.04
스프링 JWT 구현-1  (0) 2022.12.04
JPA 심화  (1) 2022.12.02