[Spring Boot] 데이터 CRUD(게시판) - 롬복과 리팩터링(10)

Bokyoung Kim·2023년 1월 15일
0

롬복을 확용하여, 기존 코드를 "리팩터링" 하기

: 기존 코드들을 간소화하는 훈련

1. Lombok이란?

: 코드를 간소화시켜주는 라이브러리

2. Lombok의 기능

  • 여러 필수코드의 반복 최소화
  • 로깅(Logging) 기능을 통해 리팩터링(Refactoring) 할 수 있음

    리팩터링(Refactoring) : 코드의 구조 또는 성능을 개선하는 작업



1) Lombok 라이브러리 추가

[pom.xml] : dependency 부분에 해당 코드 추가

<dependency> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok</artifactId> 
    <version>1.18.24</version> 
    <scope>provided</scope> 
</dependency>

2) DTO 리팩토링

  • @AllArgsConstructor : 모든 필드값을 파라미터로 받는 생성자
  • @ToString : toString() 메소드를 자동으로 생성

[com.example.firstproject.dto - ArticleForm.java]

package com.example.firstproject.dto;

import com.example.firstproject.entity.Article;

import lombok.AllArgsConstructor;
import lombok.ToString;

@AllArgsConstructor
@ToString
public class ArticleForm {
	
	private String title;
	private String content;

	public Article toEntity() {
		// Entity 클리스의 객체 생성 -> 생성자 호출
		return new Article(null, title, content); // 새롭게 Article을 만들어서 return
	}
}

3) ENTITY 리팩토링

[com.example.firstproject.entity - Article.java]

package com.example.firstproject.entity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.ToString;

@Entity // DB가 해당 객체를 인식 가능!
@AllArgsConstructor
@ToString
public class Article {
	
	@Id // 대표값을 지정! like a 주민등록번호
	@GeneratedValue // 1, 2, 3, ... 자동 생성 어노테이션
	private Long id;

	@Column
	private String title;
	
	@Column
	private String content;
}

4) 로그 남기기

4-1) 로깅이란? : 서버에서 발생하는 일을 기록할 수 있도록 하는 것
4-2) 로깅 사용법

@Slf4j : 로깅을 위한 어노테이션

package com.example.firstproject.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import lombok.extern.slf4j.Slf4j;

@Controller
@Slf4j
public class ArticleController {
	
	@Autowired
	private ArticleRepository articleRepository;
	
	@GetMapping("/articles/new")
	public String newArticleForm() {
		return "articles/new";
	}
	
	@PostMapping("/articles/create") // POST 방식으로 전송
	public String createArticle(ArticleForm form) {
		
		log.info(form.toString());
		// System.out.println(form.toString()); -> 로깅기능으로 대체!
		
		// 1. DTO를 변환! Entity!
		Article article = form.toEntity();
		log.info(article.toString());
		// System.out.println(article.toString());
		
		// 2. Repository에게 Entity를 DB 안에 저장하게 함!
		Article saved =	articleRepository.save(article);
		log.info(saved.toString());
		// System.out.println(saved.toString());
		
		return "";
	}
}

[결과]



이 게시물은 홍팍님의 인프런 강의를 보고 정리한 게시물 입니다.

출처 : https://www.inflearn.com/course/%EA%B0%9C%EB%85%90%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9E%85%EB%AC%B8/dashboard

0개의 댓글