스프링에서 롬복에 대한 설정을 추가 하던 중 발생한 문제를 해결하면서 학습한 내용을 정리한 글이다.
Gradle
Ant 와 Maven의 장점을 합친 빌드 도구.
대표적인 장점 3가지는 다음과 같다.
1. 점진적 빌드
한번 빌드를 해놓으면 수정이 일어났을 때, 기존에 빌드된 부분 제외하고 수정한 부분만 빌드한다.
2. 데몬 프로세스
빌드 결과물을 데몬에 저장해둠.
3. 빌드 캐시
dependecies 키워드
implementation
프로젝트의 컴파일과 런타임 시점 모두에 필요한 경우 사용
프로젝트 빌드 시점에 해당 라이브러리를 컴파일에 사용하고, 빌드된 결과물에도 포함한다.
compileOnly
컴파일 타임에만 사용되는 경우
프로젝트의 빌드 시점에 해당 라이브러리를 컴파일에 사용하고, 빌드된 결과물에는 포함하지 않는다. 컴파일 시점에서만 실행된다.
runtimeOnly
런타임에만 사용되는 경우
프로젝트 빌드 시점에 해당 라이브러리를 classpath에 추가하지 않고, 런타임에 필요한 경우에만 라이브러리를 프로젝트에 포함한다.
annotationProcessor
컴파일중에 사용된다.
소스 코드에서 어노테이션을 처리하여 추가적인 소스 코드 생성, 컴파일 타임 검증 등을 수행
Lombok 예시
build.gradle에 롬복을 추가하는 예시 코드이다.
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
compileOnly를 사용하는 이유?
롬복을 이용하면 컴파일 시에 @Getter 혹은 @Setter 어노테이션이 붙은 클래스의 필드를 get_(), set_()과 같은 형태의 메소드로 만들어 .class 파일이 생성된다.
런타임 시에는 이 .class 파일을 읽어 실행하므로, 롬복은 컴파일 시에만 필요한 라이브러리이기 때문에 compileOnly를 이용한다.
'Spring' 카테고리의 다른 글
M : N 관계 그냥 쓰면 안되나? (0) | 2024.07.23 |
---|---|
왜 DTO를 사용하는가? (1) | 2024.07.22 |
스프링 빈과 주요 어노테이션 (0) | 2024.07.17 |
Web서버 vs WAS (1) | 2024.07.16 |
[스프링 입문] AOP (0) | 2023.01.21 |