☞ 어노테이션은 코드의 의미를 명확하게 하고, 특정 기능을 쉽게 적용할 수 있도록 도와줌
@ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가 가능@Override : 메서드가 상위 클래스나 인터페이스의 메서드를 오버라이딩하고 있음을 나타냄@Deprecated : 더 이상 사용되지 않는 요소를 표시@SuppressWarnings : 컴파일러 경고 억제☞ 내장 어노테이션은 코드의 안정성과 유지보수성을 높이는 데 도움을 줌
☞ 사용자 정의 어노테이션을 활용하면 프로젝트의 특정 요구사항을 쉽게 반영 가능
☞ Lombok을 사용하면 코드의 가독성이 향상되며 유지보수가 편리해짐
Lombok 검색 후 설치Ctrl + Alt + S (Windows) 또는 Cmd + , (Mac)@Getter, @Setter → 모든 필드의 getter, setter 자동 생성@Getter
@Setter
public class User {
private String name;
private int age;
}
☞ getter/setter를 자동으로 생성하여 코드 중복을 줄일 수 있음
@ToString → toString() 자동 생성@ToString
public class User {
private String name;
private int age;
}
☞ 객체의 정보를 문자열로 쉽게 출력할 수 있음
@EqualsAndHashCode → equals()와 hashCode() 자동 생성@EqualsAndHashCode
public class User {
private String name;
private int age;
}
☞ 객체 비교를 간편하게 처리할 수 있음
@NoArgsConstructor, @AllArgsConstructor → 기본 생성자 및 모든 필드를 포함하는 생성자 자동 생성@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}
☞ 생성자 생성의 번거로움을 줄일 수 있음
@Data → @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 포함@Data
public class User {
private String name;
private int age;
}
☞ Lombok의 여러 기능을 한 번에 적용하여 간편하게 사용 가능
@Builder → 빌더 패턴 적용@Builder
public class User {
private String name;
private int age;
}
사용 예시
User user = User.builder()
.name("John")
.age(30)
.build();
☞ 객체 생성 시 가독성과 유연성을 높일 수 있음
@Slf4j → Logger 객체 자동 생성하여 로그 작성 가능@Slf4j
public class UserService {
public void logMessage() {
log.info("This is a log message");
}
}
☞ 로깅을 간편하게 처리할 수 있어 디버깅과 운영 모니터링에 유용함
@Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor, @Data, @Builder, @Slf4j