롬복을 확용하여, 기존 코드를 "리팩터링" 하기
: 기존 코드들을 간소화하는 훈련
: 코드를 간소화시켜주는 라이브러리
리팩터링(Refactoring) : 코드의 구조 또는 성능을 개선하는 작업
[pom.xml] : dependency 부분에 해당 코드 추가
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
- @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
}
}
[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;
}
@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 "";
}
}
[결과]
이 게시물은 홍팍님의 인프런 강의를 보고 정리한 게시물 입니다.