본문 바로가기
SpringBoot/이론

[ Spring Boot ] Lombok (롬복) 설치 및 설정 + 프로젝트 기본 설정

by Hwanii_ 2023. 9. 14.
728x90

Lombok == 롬복 이란 ?

 

자바 클래스 VO의 getter, setter, toString(), equals(), .. 등의 메서드를 자동으로 생성해준다.

 

즉, 자바 클래스의 멤버변수만 직접 생성 하면, 나머지는 모두 자동으로 생성 한다.

 

편리하고, 코드의 가독성이 좋아진다는 장점이 있다.

 

1.


https://projectlombok.org/download

 

Download

 

projectlombok.org

 

위의 경로에서 롬복을 다운 받는다.

 

23.09.14 기준 최신 버전은 Download 1.18.28 이다.

 

 

2.

다운을 받으면, 아래와 같은 아이콘을 가진 파일이 다운 되어 있다.

 

 

3.

롬복의 위치를 이동 시켜 준다.

 

 

압축을 해제하고, IDE 경로를 잡아줘야 한다.

 

IDE 경로를 잡고 업데이트 및 설치를 클릭 한다.

 

 

 

 

4.

설치가 끝났으면,

우측 하단의 Quit Installer 을 클릭 하고,

새 프로젝트를 생성 한다.

 

 

 

 

(자바 버전이 11 버전이라, 3.1.3 을 하지 않고 2.7.15 를 선택 했다)

(인텔리제이에서 사용할때는, 3.1.3은 자바 버전 17 이상 부터 지원 한다고 하는데 ..)

 

 

사용할 Lombok을 검색 해서 선택 한다.

 

그리고, Finish 클릭 하기.

 

 

 

잘 마무리 되면,

 

> Task :nothing UP-TO-DATE

BUILD SUCCESSFUL in 10s
Working Directory: C:\Users\dhfg0\Desktop\springBoot\workspace\TEST04
Gradle user home: C:\Users\dhfg0\.gradle
Gradle Distribution: Gradle wrapper from target build
Gradle Version: 8.2.1
Java Home: C:\Users\dhfg0\Desktop\springBoot\sts-4.19.1.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502\jre
JVM Arguments: None
Program Arguments: None
Build Scans Enabled: false
Offline Mode Enabled: false
> Task :cleanEclipseWtpComponent UP-TO-DATE
> Task :cleanEclipseWtpFacet UP-TO-DATE
> Task :cleanEclipseWtp UP-TO-DATE
> Task :eclipseWtpComponent
> Task :eclipseWtpFacet
> Task :eclipseWtp

BUILD SUCCESSFUL in 893ms
5 actionable tasks: 2 executed, 3 up-to-date

 

위와 같이 console 창에 출력 된다.

 

5.

기본 설정 하기

 

기본 설정은 프로젝트를 새롭게 생성 할때마다 반드시 해줘야 하는 설정 이다.

 

1)

application.properties 에서 서버 포트랑 JSP ViewResolver 설정을 한다.

 

 

server.port=8088

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

 

왜 ViewResolver 설정을 접두사 부분에 /WEB-INF/ 하위폴더 인지는 다음과 같다.

WEB-INF 하위 폴더에 views 폴더는 반드시 꼭 보여줘야 하는 데이터가 있는 경우에는,

해당 경로로 설정 하게 된다.

 

2)

JSP 설정은 main 폴더에 webapp 폴더를 생성 하고, 그 내부에 WEB-INF 폴더를 만들고 views 폴더를 생성 한다.

 

 

3)

build.gradle 에서 JSP를 컴파일 해줄 수 있는 라이브러리 추가 한다.
또한,
build.gradle 에서 JSTL 관련 라이브러리를 추가 한다.

 

변경 전

 

 

변경 후

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

참고로, maven은 한번 추가한 라이브러리를 자동으로 초반에 추가해준다.

 

하지만, gradle은 자동으로 초반에 추가해주지 않는다.

 

그래서,

build.gradle 우클릭 하고,

gradle project 새로고침 클릭을 해주면 된다.

 

 

4)

롬복 라이브러리를 사용 하기 위해서, VO 클래스를 생성 하기.

 

package com.hwan.app;

import lombok.Data;

@Data
public class VO {
	
	private String id;
	private String name;

}	//	VO

 

@Data 라는 어노테이션을 VO 클래스 위에 명시 하면, 모든것을 관리 해주게 된다.

 

 

[ 참고 ]

 

VO와 DTO (Data Transfer Object) 의 차이점 ?

 

사실 VO == DTO 이다.

 

둘을 굳이 구분지어서 생각 하지 않는다.

 

Data 중심의 프로젝트 에서는 주로 DTO 라고 불리게 되고,

Java 중심의 프로젝트 에서는 주로 VO 라고 불리게 된다.

 

 

 

5.

실제로 롬복이 적용 됬는지를 확인 하기.

 

롬복이 적용 됬는지를 확인 하기 위해서,

VO 객체를 console 창에 로그로 띄울 때, toString() 이 됬는지를 확인해보자.

 

참고로,

값이 잘 주고 받아지는지를 확인 하기 위해서,

간단하게 Xxx.jsp 파일을,

main > webapp > WEB-INF > views 폴더 내부에 생성 해서 테스트 하면 된다.

 

 

이렇게 .jsp 로 끝나도록 확장자명을 작성해서 파일을 생성해준다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html lang="ko">
   <head>
      <meta charset = "UTF-8">
      <title>롬복 예제</title>
   </head>
   <body>

	<h1>${apple} | ${apple}</h1>
      
   </body>
</html>

 

VO와 test.jsp 도 만들었으니, Controller도 만들면 된다.

 

package com.hwan.app;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class CTRL {
	
	@RequestMapping(value = "/")
	@ResponseBody
	public String root() {
		return "Lombok Example !";
	}
	
	@RequestMapping(value = "/test")	//	루트 요청
	public String test(VO vo, Model model) {
		
		System.out.println("vo : " + vo);
		
		model.addAttribute("apple", vo.getId());
		
		return "test";	//	webapp/WEB-INF/views/test.jsp
	}
	

}	//	CTRL

 

사용자로부터 test 라는 요청값이 오면,

커맨드 객체로 사용된 VO 객체를 println 으로 로그를 찍는 모습도 보인다.

또한,

사용자가 id 프로퍼티의 값을 보내줬다면, 자동으로 set이 되서,

그 값을 apple 이라는 파라미터명으로 test.jsp 로 보내게 된다.

 

 

URL에 test를 입력 하면, 보내준 아이디 프로퍼티의 값이 없는 상황 이다.

 

이곳에 값을 같이 넣고 보내주면,

 

 

이렇게 뜨게 된다.

 

 

console 창을 확인하니까 toString() 된 것도 확인 할 수 있다.

 

반응형