728x90

롬복을 활용하여 기존 코드를 리팩토링 해보자

롬복이란? 

코드를 간소화 시켜주는 라이브러리 (게터,세터,생성자등)

반복최소화 할수 있고 로깅(Slf4j)기능을 통해 pringln기능 개선, 리팩토링할수 있다

리팩토링이란?

코드의 구조 성능 개선 작업

로깅이란?

프로그램 수행과정을 기록으로 남긴다

SLF4J 동작과정

SLF4J은 간략히 아래와 같은 과정을 거쳐요.

  • 개발할 때, SLF4J API를 사용하여 로깅 코드를 작성
  • 배포할 때, 바인딩된 Logging Framework가 실제 로깅 코드를 수행

-롬복 설치

firstproject/build.gradle

//롬복 추가
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

-플러그인 설치

리팩토링 하기

../dto/ArticleForm

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() {
        return new Article(null,title,content);
    }
}

../entity/Article

package com.example.firstproject.entity;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Entity // DB가 해당 객체를 인식 가능하게 한다
public class Article {

    @Id // 대표값을 지정한다 like 주민번호
    @GeneratedValue //1,2,3,... 자동생성 어노테이션!
    private Long id;

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


}

- 로그 남기기

실제 서버에서는

System.out.println();

을 사용하면 기록에도 남지도 않고 서버의 성능에도 악역향을 끼치기때문에

로그를 남겨 사용한다.

로깅이란?

자동차에서 블랙박스에 매순간 기록을 영상으로 남기듯이

내가 코드기록을 남기는것

@Slf4j(Simple Logging Facade for Java) 로깅을 위하나 어노테이션

../controller/ArticleController

package com.example.firstproject.controller;

import com.example.firstproject.dto.ArticleForm;
import com.example.firstproject.entity.Article;
import com.example.firstproject.repository.ArticleRepository;
import lombok.extern.slf4j.Slf4j;
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;

@Controller
@Slf4j //로깅을 위하나 어노테이션
public class ArticleController {

    @Autowired //스프링 부트가 미리 생성해놓은 리파지터리 객체를 가져옴(DI)
    private ArticleRepository articleRepository;

    @GetMapping("/articles/new")
    public String newArticleForm(){
        return "articles/new";
    }

    @PostMapping("/articles/create")
    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 "";
    }
}

실행하면 잘 된다!

728x90
복사했습니다!