컴파일 & 저장 자동
lombok 적용 가능 (VSCode도 가능)
Lombok은 Annotation을 이용해 어노테이션 기반으로 코드를 자동완성 해주는 라이브러리
컴파일 시점에 Getter, Setter, 생성자, toString, Builder 등을 자동으로 생성
보통 기본으로 설치되어있음
- Plugins - Lombok 검색 - installed 확인
어노테이션 기반의 코드 자동 생성을 통한 생산성 향상
반복되는 코드 다이어트를 통한 가독성 및 유지보수성 향상
Getter, Setter 외에 빌더 패턴이나 로그 생성 등 다양한 방면으로 활용 가능
- Build, Execution, Deployment
&nb - Compiler - Annotation Processors - 맨 위에 Enable ~~~ 체크 후 apply
- Build Tools - Graddle - using : IntelliJ IDEA 설정
위 링크에서 gradle 선택 - 복사
build.graddle 파일 내 dependencies 부분에 추가
dependencies {
...
/*아래 문장 추가*/
// https://mvnrepository.com/artifact/org.projectlombok/lombok
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
}
public class Store {
String name; //가게이름
double lat, lng; //위도, 경도
String menu; //가게메뉴
double score; //평점
}
class StoreService {
public StoreService() {
}
public Store findByMenu (String menu) {
}
}
패키지는 무조건 소문자로만!!!
클래스는 대문자로 메서드는 소문자로 시작
StoreDTO.java 생성
롬복 적용되는지 확인?
-> 클래스 위에 @Data 입력
@Data
public class StoreDTO {
}
입력하고 망치모양(Build Project) 버튼 선택
프로젝트 폴더에 Build 폴더 생성
해당 폴더 제일 안에 클래스 생성되었는지 확인하기 -> build폴더 수정은 XXX
lombok에 자주 사용하는 어노테이션
@getter @setter @tostring @RequireArgsConstructor @EqualsAndHashCode 한번에 설정
즉 모든 필드를 대상으로 접근자와 설정자가 자동 생성
final, tostring, equals, hashCode 메소드도 자동 생성
import lombok.Data;
@Data
public class StoreDTO {
private String name;
private double lat, lng;
private String menu;
private double score;
}
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Main 클래스에 생성자 추가하는 대신 StoreDTO에 annotation추가
//요즘은 생성자 대신 아래 3개의 annotation 같이씀
@AllArgsConstructor
@Builder
@NoArgsConstructor
모든 변수를 파라미터로 받는 생성자 자동완성
해당 클래스의 객체의 생성에 Builder패턴 적용
모든 변수들에 대해 build하기를 원한다면 클래스 위에 @Builder
특정 변수만을 build하기 원한다면 생성자를 작성하고 그 위에 @Builder
파라미터 없는 기본 생성자 자동완성
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
//builder().build(); -> 생성자가 많고 복잡할때
StoreDTO storeDTO = StoreDTO.builder()
.name("가게이름")
.lat(37.1234)
.lng(127.23332)
.menu("쌈밥")
.build();
System.out.println(storeDTO);
}
}
Builder -> builder().build(); 를 통해서 get set toString 등의 생성자 명령어들이 실제로는 생성되지 않았지만 생성된 것처럼 작동해서 코드의 길이를 획기적으로 줄여주고 가독성을 높이고 유지보수를 용이하게 함
!! Windows에서는 한글 사용 시 MS949 Error발생
Actions 검색 ( Ctrl + Shift + a )
- VM 검색 -> Edit Custom VM Options
- 맨 아래에 아래 문장 추가
-Dfile.encoding=UTF-8
Hello World!
StoreDTO(name=가게이름, lat=37.1234, lng=127.23332, menu=쌈밥, score=0.0)
실행 후 build 폴더 생성
build에 생기는 class파일 확인
-> 열면 실제 자바파일이 아니라 읽을 수 있게 자동으로 디컴파일되어서 열림
클래스파일 확인해보면 getter setter toString까지 다 생긴거처럼 보임 -> 실제론 생기지 않았음!
로직위주의 클래스
메소드 우선 설계
파라미터와 리턴타입으로 데이터 위주의 클래스 타입 (StoreDTO) 활용
생성자 의미 - Ready 준비
멤버변수 - 누적 / 상태 / 조력자