롬복(lombok) 이란?
롬복(Lombok)은 자바에서 Model(DTO, VO, Domain) Object 를 만들때, 멤버필드(프로퍼티)에 대한 Getter/Setter, ToString과 멤버필드에 주입하는 생성자를 만드는 코드 등 불필요하게 반복적으로 만드는 코드를 어노테이션을 통해 줄여 주는 라이브러리, 프로젝트 입니다.
출처: https://goddaehee.tistory.com/95 [갓대희의 작은공간]
1. 롬복 직접 다운로드 경로
2. maven을 이용하여 pom.xml에 코드 작성
https://mvnrepository.com/artifact/org.projectlombok/lombok
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
<!-- 가끔씩 인식 오류가 있을 때 이 부분 주석 처리-->
<scope>provided</scope>
</dependency>
3. 롬복 설치 방법
https://dev114.tistory.com/369
4. lombok 주요 annotation
@Data : 다음 어노테이션을 모두 한번에 처리 한다.
- @ToString : 모든 필드를 출력하는 toString() 메소드 생성
- @EqualsAndHashCode : hascode 와 equals 메소드를 생성
- @Getter(모든 필드) : getter, setter를 생성하지 않도록 지원
- @Setter(모든 필드-final로 성언되지 않은)
- @RequiredArgsConstructor : 필수 인자만 있는 생성자 생성
- @NoArgsConstructor : 인자 없는 생성자 생성
- @AllArgsConstructor : 모든 인자를 가진 생성자 생성
@Log : 종류별 로그를 사용할 수 있도록 한다. (@Log, @Slf4j, @CommonLog 등)
@Cleanup : 자동 리소스 관리 : close() 메소드를 귀찮음 없게 안전하게 호출
@Value : 불변 클래스를 쉽게 생성
@SneakyThrows : Exception 발생시 체크된 Throable로 감싸서 전달
@Synchronized : 메소드에서 동기화 Lock을 설정
@Getter(lazy=true) : 동기화를 이용하여 최초 1회만 getter가 호출
5. @Data 사용 예제
1) lombok 적용전
- 생성자, getter, setter가 있음
- VO에 변수가 추가될 때마다 getter, setter, ToString 계속 추가 해줘야함
public class ExampleVO {
private final String name;
private int age;
public SimpleVO(String name) {
this.name = name;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name=" + name + ", age=" + age;
}
}
2) lombok 적용후 -> 필요한 소스들 자동 추가!!
@Data
public class ExampleVO {
private final String name;
private int age;
}
-> 웬만하면 Data는 지양하고 그때마다 필요한 Data의 하위 어노테이션들을 사용해주기
클린 코드나, 유지 보수하기 좋은 코드, 좋은 캡슐화 이런 것들이 너무 거창한 것이 아니라
객체를 생성할 때나 메서드를 제공할 때 조금 더 깊게 생각해 보는 습관이 중요
https://cheese10yun.github.io/lombok/
'Programming > SpringFramework' 카테고리의 다른 글
[Spring] mybatis-config.xml (mybatis에 필요한 설정 정보) (0) | 2020.08.12 |
---|---|
[Spring] log4jdbc-log4j2t 설정 (SQL 쿼리 로그) (0) | 2020.08.07 |
[Spring] 스프링 버전 확인 링크 (0) | 2020.08.06 |
[Spring] JUnit 단위 테스트 (0) | 2020.08.06 |
[Spring] IoC 컨테이너 - Inversion of Control(7강) (0) | 2020.08.04 |