카테고리 없음

4. 롬복과 리팩터링

smallsilver_west 2024. 12. 21. 20:05

4.1 롬복이란

 

롬복

코드를 간소화해주는 라이브러리로 getter( ), setter( ), constructor( ), toString( ) 등 필수 메서드의 반복 작성을 최소하하는 역할

로깅 기능을 사용해 프로그램의 수행 과정을 기록으로 남겨 println( )문 개선

 

4.2 롬복을 활용해 리팩터링

 

ArticleForm( ) 생성자 간소화

// 1. AllArgsConstructor 패키지 자동 임포트
import lombok.AllArgsConstructor; 
 
// 2. 새 어노테이션 추가
@AllArgsConstructor 
public class ArticleForm {
    private String title;
    private String content;

/* 3. 생성자 전체 삭제
    public ArticleForm(String title, String content) { 
        this.title = title;
        this.content = content;
    }
    
*/

 

tostring( ) 메서드 간소화

// 1. ToString 패키지 자동 임포트
import lombok.ToString;

@AllArgsConstructor

// 2. 새 어노테이션 추가
@ToString 
public class ArticleForm {
    private String title;
    private String content;
    
/*	3. 메서드 전체 삭제
    @Override
    public String toString() {
        return "ArticleForm{" +
                "title='" + title + '\'' +
                ", content='" + content + '\'' +
                '}';
    }
*/

 

엔티티 리팩터링하기

// 1. Article() 생성자를 대체하는 어노테이션 추가 
@AllArgsConstructor 
//	➋ toString() 메서드를 대체하는 어노테이션 추가
@ToString


@Entity
public class Article {

(중략)
/* 생성자 삭제
    public Article(Long id, String title, String content) { 
    (중략)
    }
*/
/* 메서드 삭제
    @Override --- 
     public String toString() {
     (중략)
    }
*/
}

 

컨트롤러에 로그 남기기

println( )문이 데이터 기록을 남기지 않고 서버의 성능에 악영향을 끼치는 점을 개선해 로깅 기능을 사용

// 로깅 기능을 위한 어노테이션 추가
@Slf4j
@Controller
public class ArticleController {

	(중략)
    @PostMapping("/articles/create")
	public String createArticle(ArticleForm form) {
    	// 1. 로깅 코드 추가
    	log.info(form.toString()); 
        // 2. 기존 println() 문 주석 처리
     // System.out.println(form.toString());
    
    // DTO를 엔티티로 변환
	Article article = form.toEntity();
    // 1. 로깅 코드 추가
	log.info(article.toString());
    // 2. 기존 println() 문 주석 처리
 	// System.out.println(article.toString()); --- 
 
 	// 리파지터리로 엔티티를 DB에 저장
 	Article saved = articleRepository.save(article);
    // 1. 로깅 코드 추가 
	log.info(saved.toString()); 
    // 2. 기존 println() 문 주석 처리
	// System.out.println(saved.toString()); 
}