'분야/웹프로그래밍'에 해당되는 글 1건

  1. 2019.01.17 스프링 4 입문강의 : 4. 롬복 / Lombok !!

https://gs.saro.me/dev?tn=399





이전 강의에서 이것저것 많이 썼기 때문에, 이번 장에선 조금 쉴 겸 롬복을 다뤄보도록 하겠습니다. 롬복은 스프링에 관련된 것은 아니지만, 자바에서 전반적으로 사용할 수 있습니다. 스프링 또한 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 의 <dependencies></dependencies> 사이에 아래 코드를 추가합니다.
<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 배포를 해보는 강의를 하도록 하겠습니다.


Posted by w우주z
,