본문 바로가기
자바/스프링 부트

[Spring boot] 07. 스프링 부트 롬복과 리팩터링

by drCode 2021. 6. 2.
728x90
반응형

안녕하세요.

 

이번 포스팅은 롬복을 사용, 코드들을 리팩터링하는 작업을 해보도록 하겠습니다.

 

롬복이란? 

Lombok이란 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리이다. Lombok을 이용하면 Getter, Setter, Equlas, ToString 등과 다양한 방면의 코드를 자동완성 시킬 수 있다.

 

리팩터링이란?

리팩터링은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선하는 유지보수 행위이다.

 

728x90

 

(1) 롬복 사용하기

 

롬복 추가

 

프로젝트에서 build.gradle을 연다.

 

롬복 추가

 

이제 롬복 라이브러리를 추가해준다.

 

롬복 추가

 

compileOnly 'org.projectlombok:lombok'

annotationProcessor 'org.projectlombok:lombok'

 

그런데, 이것만 하면 되는 게 아니다.

 

롬복 추가

그레이들을 새로고침해줘야 한다.

 

그레이들 빌드가 끝나면

 

롬복 추가

 

롬복 라이브러리가 추가된 것을 확인할 수 있다.

 

이제 플러그인에서 롬복을 install 해줘야 한다.

 

맨위 Help > find action > plugins 검색 후 선택 > lombok 검색

 

롬복 추가

 

롬복 추가

이런 안내문이 뜨면 Enable 클릭

 

이러면 롬복을 사용할 준비가 되어있다.

 

제일 먼저, DTO를 고쳐보자.

 

SampleArticleForm.java 

package com.example.fisrtProject.dto;

import com.example.fisrtProject.entity.SampleArticle;
import lombok.AllArgsConstructor;
import lombok.ToString;

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

    public SampleArticle toEntity() {
        return new SampleArticle(null, title, content);
    }
}

 

 

롬복으로 리팩터링하면 생성자를 선언하지 않고도 개발을 할수 있어 편리하다.

@ToString 을 사용하면 ToString을 Generate 하지 않고도 toString() 메서드를 사용할 수 있다.

 

 

롬복 추가

데이터를 입력하고 전송하면 

 

롬복 추가

 

기존처럼 데이터가 잘 넘어간 모습을 확인할 수 있다.

 

그리고 DTO를 고쳤으니, Entity를 고쳐야한다.

 

SampleArticle.java

package com.example.fisrtProject.entity;

import lombok.AllArgsConstructor;
import lombok.ToString;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity // DB가 해당 객체를 인식 가능
@AllArgsConstructor
@ToString
public class SampleArticle {

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

    @Column
    private String content;

    public SampleArticle() {}
}

 

 

(2) 출력문 로그로 바꾸기

 

기존에 쓰던 System.out.println()을 로그로 바꿀 것이다.

 

로깅을 사용하기 위해선

 

어노테이션 @Slf4j를 사용해야한다.

 

SampleArticleController.java

package com.example.fisrtProject.controller;

import com.example.fisrtProject.dto.SampleArticleForm;
import com.example.fisrtProject.entity.SampleArticle;
import com.example.fisrtProject.repository.SampleArticleRepository;
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 SampleArticleController {

    @Autowired  // 스프링 부트가 미리 생성해 놓은 객체를 가져다가 자동으로 연결
    private SampleArticleRepository saRepository;

    @GetMapping("/sampleArticle/article")
    public String newArticleForm() {
        return "sampleArticle/sampleArticle";
    }

    @PostMapping("/sampleArticle/create")
    public String createArticle(SampleArticleForm form) {
        log.info(form.toString());
        //System.out.println(form.toString());

        // 1. DTO를 변환! Entity!
        SampleArticle sa =  form.toEntity();
        //System.out.println(sa.toString());
        log.info(sa.toString());

        // 2. Repository에게 Entity를 DB안에 저장하게 함!
        SampleArticle saved = saRepository.save(sa);
        //System.out.println(saved.toString());
        log.info(saved.toString());

        return "";
    }
}

 

다시 서버를 재기동시켜보자.

 

리팩터링

화면에서 데이터를 입력한 후 전송한다.

 

리팩터링

 

로그로 정보를 출력하면 잘 나오는 것을 확인할 수 있다.

728x90
반응형

댓글