[Spring Boot] lombok 사용

Posted by 김성철

스프링 부트 - lombok 사용

사용 이유

getter , setter , tostring 등을 만들지 않아도 됨  
여러가지 기능이 있으나 현재는 위에의 기능만 사용함  

그래들에 롬북 추가

build.gradle 파일을 열어서 dependencies에 아래의 내용을 추가  
  
	compileOnly 'org.projectlombok:lombok:1.18.20'  
	annotationProcessor 'org.projectlombok:lombok:1.18.20'  
  
	testCompileOnly 'org.projectlombok:lombok:1.18.20'  
	testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'  
  
※ 추가 예시  
=====================================================================================================================================================  
  
	dependencies {  
		implementation 'org.springframework.boot:spring-boot-starter-web'  
		implementation 'org.springframework.boot:spring-boot-starter-web-services'  
		testImplementation 'org.springframework.boot:spring-boot-starter-test'  
  
		// lombok을 위해 추가!!!!!  
		compileOnly 'org.projectlombok:lombok:1.18.20'  
		annotationProcessor 'org.projectlombok:lombok:1.18.20'  
  
		testCompileOnly 'org.projectlombok:lombok:1.18.20'  
		testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'  
  
	}  
  
=====================================================================================================================================================  

인텔리J 플러그인 추가

1. 컨트롤 + 알트 + S 동시에 입력 ( 인텔리J 설정창)  
2. 좌측에서 Plugins 선택  
3. 검색창에 Lombok 검색  
4. 설치 후 인텔리J 재시작  

사용하기

1. 생성한 VO의 클래스명 상단에 @Data 를 선언  
2.import 는 import lombok.Data;  
  
=====================================================================================================================================================  
	@Data  
	public class UserVO {  
  
		private String dept_name;            //웹에서 받아온 부서명  
  
=====================================================================================================================================================  
  
* 해당 라이브러리 사용시 getter , setter , toString 을 만들 필요가 없음  

Builder 사용

보통 셋 해서 작성할때  
Class class = new Class();  
class.setName("값");  
class.setAge("값");  
이렇게 하는데,  
빌더를 사용하면  
  
Class class = Class.builder()  
	.name(name)  
	.age(age)  
	.build();  
  
위와같이 사용이 가능함.  

롬북 안될떄

https://m.blog.naver.com/light-star/221969272088  
  
1. Enable annotation processing  
  
	인터넷 검색하면 제일 많이 하라고 하는 것이 바로 이 "Enable annotation processing"이다.  
  
	Preference -> Build, Execution, Depolyment -> Compiler -> Annotation Processors 에 있는 설정인데  
  
2. Lombok 설치  
  
	두번째는 lombok을 gradle에 설정만 하는게 아니라 직접 설치를 해야한다는 결과들이 많이 나온다.  
  
	그런데 난 이것도 이미 설치 했었음... 그래도 혹시 몰라서 uninstall -> install -> intelliJ 껐다켜기 를 해봤지만 역시나 문제는 해결되지 않았다..  
  
3. build.gradle에서 lombok 버전 명시해 주기  
	또 찾아보니까 나온게 저렇게 lombok옆에 버전을 명시해 줘야한다는 거였다.  
  
	밑져야 본전이라는 생각에 이젠 반쯤 자포자기한 심정으로 바꿔주고... gradle refresh 해주고,,, 또 죄없는 intelliJ만 껐다가 켰지만 역시나 해결되지 않았다.  
  
4.VM Options 추가  
	Build , Excution, Deployment -> compiler -> ActionScript & Flex Compiler  
	VM Options 에 javaagent:lombok.jar 추가  
	https://stackoverflow.com/questions/24006937/lombok-annotations-do-not-compile-under-intellij-idea/30125507##30125507  
	https://stackoverflow.com/questions/9424364/cant-compile-project-when-im-using-lombok-under-intellij-idea