제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
스프링 정리를 위한 포스팅입니다.
해당 포스팅은 Lombok 어노테이션 입니다.
Lombok이란?
Lombok은 Java 애플리케이션에서 보일러플레이트 코드(반복적인 코드)를 줄여주는 라이브러리입니다.
이를 통해 코드의 가독성을 높이고 유지보수를 쉽게 만들어 줍니다.
왜 Lombok을 사용해야 하는가?
- Java의 기본 클래스는 자주 사용되는 메서드(생성자, getter, setter, toString 등)를 수동으로 작성해야 합니다.
- Lombok은 이러한 반복적인 코드 생성을 자동화하여 개발 생산성을 크게 향상시킵니다.
Lombok 어노테이션 종류
@Getter / @Setter
- 클래스의 모든 필드에 대해 getter와 setter 메서드를 자동으로 생성합니다.
@Getter @Setter
public class Person {
private String name;
private int age;
}
@ToString
- 객체의 필드를 문자열로 변환하는 toString() 메서드를 자동으로 생성합니다.
@ToString
public class Person {
private String name;
private int age;
}
@NoArgsConstructor / @AllArgsConstructor
- 기본 생성자 및 모든 필드를 초기화하는 생성자를 자동으로 생성합니다.
@NoArgsConstructor
@AllArgsConstructor
public class Animal {
int age;
String name;
}
@Builder
- 빌더 패턴을 적용하여 객체 생성 시 가독성을 높입니다.
@Builder
public class Animal {
int age;
String name;
}
@Data
- @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 모두 포함하는 어노테이션입니다. 주로 DTO 객체에 사용됩니다.
@Data
public class Plant {
private int height;
private String origin;
public Plant(int height, String origin) {
this.height = height;
this.origin = origin;
}
}
Lombok 설치방법
spring에서 lombok을 설치하기 위해서는 maven 또는 gradle을 사용하면 됩니다. 저는 gradle을 사용하겠습니다.
build.gradle에서 compileOnly 'org.projectlombok:lombok', annotationProcessor 'org.projectlombok:lombok'
를 설정한 후에 gradle 프로젝트를 reload 하면 됩니다.
dependencies {
// ...
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
예제 확인
public class Test {
public static void main(String[] args) {
// @Getter, @Setter
Person person = new Person(1, 3, 4, 5, 8);
System.out.println(person.getShoes()); // getShoes() automatically generated
person.setShoes(84); // setShoes() automatically generated
System.out.println(person.getShoes());
// @ToString
System.out.println("person.toString: " + person.toString()); // toString() automatically generated
// @NoArgsConstructor / @AllArgsConstructor
Animal tomy = new Animal(20, "tomy");
Animal aymee = new Animal(); // Default constructor automatically generated
System.out.println("tomy = " + tomy); // toString() automatically generated
System.out.println("aymee = " + aymee); // toString() automatically generated
// @Builder
Animal hiro = Animal.builder().age(7).name("hiro").build(); // Using builder pattern
System.out.println("hiro.toString() = " + hiro); // toString() automatically generated
// @EqualsAndHashCode, @RequiredArgsConstructor
Plant plant1 = new Plant(2, "korea");
Plant plant2 = new Plant(2, "korea");
// @Data
System.out.println("plant1 equals plant2: " + plant1.equals(plant2)); // true, since fields are the same
System.out.println("plant1 hashCode: " + plant1.hashCode()); // Same hashCode for equal objects
System.out.println("plant2 hashCode: " + plant2.hashCode()); // Same hashCode for equal objects
// @RequiredArgsConstructor automatically generates a constructor with final fields
Plant plant3 = new Plant(3, "japan"); // Constructor with height and origin fields
System.out.println("plant3: " + plant3); // toString() automatically generated
}
}
다음과 같이 모든 어노테이션에 대해 결과를 확인할 수 있습니다.
코드
'spring > 어노테이션 정리' 카테고리의 다른 글
[Spring] @Slf4j가 뭐야? (2) | 2025.03.11 |
---|---|
[Spring] 직렬화, 역직렬화 관련 어노테이션 정리 (0) | 2025.03.11 |
[Spring] @Controller @Service @Repository에 대해 알아보자! (0) | 2024.11.25 |