[백업][가리사니] 스프링 4 입문강의 : 4. 롬복 / lombok !!
eclipse, java, spring

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

스프링 4 입문강의

서론

이전 강의에서 이것저것 많이 썼기 때문에, 이번 장에선 조금 쉴 겸 롬복을 다뤄보도록 하겠습니다. 롬복은 스프링에 관련된 것은 아니지만, 자바에서 전반적으로 사용할 수 있습니다. 스프링 또한 getter, setter 가 많이 쓰여, 소스가 어지러운 현상이 있기에 이번 장을 추가하게 되었습니다.

  • 롬복은 getter, setter 외에도 많은 기능들이 있습니다.
  • 참고 : /wiki?dn=70

이전 강의에 쓰여진 코드 일부

package com.first.jpa;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="simple_comment")
public class SimpleComment implements Serializable
{
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="comment_no")
	private long comment_no;

	@Column(nullable = false)
	private String text;

	@Column(insertable = false, updatable = false)
	@Temporal(TemporalType.TIMESTAMP)
	private Date datetime;

	public long getComment_no()
	{
		return comment_no;
	}
	public String getText()
	{
		return text;
	}
	public void setText(String text)
	{
		this.text = text;
	}
	public Date getDatetime()
	{
		return datetime;
	}
}

필요없는 getter, setter를 생략했는데도 소스가 get / set 으로 반은 차지하는 느낌이 듭니다.

1. 롬복을 설치해보자!

  • 이전 강의에서 작업했던 first 프로젝트를 불러옵니다.
  • pom.xml 의 사이에 아래 코드를 추가합니다.
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.8</version>
	<scope>provided</scope>
</dependency>
  • 롬복이 getter / setter 를 만들어주더라도 이클립스가 이를 인식해야 인텔리센스를 만들고 오류도 나지 않기 때문에 아래와 같은 작업을 해주셔야합니다. 방법 1
  • 메이븐repository경로/org/projectlombok/lombok/1.16.8/lombok-1.16.8.jar 실행 방법 2
  • https://projectlombok.org/mavenrepo/index.html 에서 lombok.jar 를 다운받아 실행. 실행이 안될때... 필자는 7zip을 쓰기 때문에 몰랐지만... 주변사람들 중 특정 압축 프로그램을 사용하고 있으면 jar를 해당프로그램이 선점하고있어서 압축파일이 열리는 경우가 있습니다. 해당 프로그램 옵션에서 제외하거나 java 명령어로 실행시켜주시면 됩니다. 실행 후 IDE(STS / 이클립스)를 찾아서 입력해줍니다. 이 과정이 끝나면 해당 IDE는 린트 / 오토컴파일 / 인텔리센스에서 롬복이 인식되어 사용할 수 있습니다. 기타
  • 이 과정에서 프로젝트 최상위에 오류표시가 되어있다면.
  • 우클릭 -> Maven -> Update Project 를 해주시면 됩니다.

2. 롬복을 적용해보자!

위 SimpleComment 클래스를 다음과 같이 바꿔줍니다.

package com.first.jpa;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

@Entity
@Table(name="simple_comment")
@Data
public class SimpleComment implements Serializable
{
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="comment_no")
	@Getter
	private long comment_no;

	@Column(nullable = false)
	@Getter @Setter
	private String text;

	@Column(insertable = false, updatable = false)
	@Temporal(TemporalType.TIMESTAMP)
	@Getter
	private Date datetime;
}
  • 이렇게 해서 훨씬 보기 깔끔해졌습니다.
  • 롬복을 사용할 클래스엔 @Data 를 써주고 @Getter @Setter 를 지정해주시면 됩니다.
  • 이제 직접 실행하여 제대로 작동하는지 확인해봅시다.

3. 좀 더 응용하면 아래와 같이 쓸 수 있습니다.

롬복을 적용하지 않은 예제 .......

import java.util.Date;

public class TextData
{
	public long getNo()
	{
		return no;
	}
	public void setNo(long no)
	{
		this.no = no;
	}
	public String getSubject()
	{
		return subject;
	}
	public void setSubject(String subject)
	{
		this.subject = subject;
	}
	public String getText()
	{
		return text;
	}
	public void setText(String text)
	{
		this.text = text;
	}
	public String getLink()
	{
		return link;
	}
	public void setLink(String link)
	{
		this.link = link;
	}
	public Date getDate()
	{
		return date;
	}
	public void setDate(Date date)
	{
		this.date = date;
	}

	private long no;
	private String subject;
	private String text;
	private String link;
	private Date date;
}

롬복 적용

import java.util.Date;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

@Data
@Getter @Setter
public class TextData
{
	private long no;
	private String subject;
	private String text;
	private String link;
	private Date date;
}
  • 까... 깔끔해!!

여기 까지 하셨다면 앞으로의 강의는 리눅스에 톰켓과 MySQL을 설치하고 war 배포를 해보는 강의를 하도록 하겠습니다.