벡엔드/SpringBoot

[Spring] 스프링 Lombok 어노테이션 정리

코딩하는이씨 2023. 7. 21. 00:45
728x90
반응형

접근자(get), 설정자(set) 자동 생성

  • @Getter
  • @Setter
@Getter
@Setter
public class UpdateItemDto {
    private String name;
    private int price;
    private int stockQuantity;

}

생성자 자동생성

  • @ReqiredArgsConstructor : 의존성 주입 방법 중 생성자 주입을 임의의 코드 없이 자동으로 설정해준다.
@RequiredArgsConstructor
public class OrderService {

    private final OrderRepository orderRepository;
    private final MemberRepository memberRepository;
    private final ItemRepository itemRepository;
  • @NoArgsConstructor : 아래와 같이 작성하지 않아도 파라미터가 없는 기본 생성자를 자동으로 생성해준다.
public UpdateItemDto() {}
  • @AllArgsConstructor : 아래와 같이 작성하지 않아도 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성해준다.
public UpdateItemDto(String name, int price, int stockQuantity) {
        this.name = name;
        this.price = price;
        this.stockQuantity = stockQuantity;
}

ToString 메소드 자동 생성 

  • @ToString(exclude = "옵션 값") : toString 메소드를 자동으로 생성해준다. (exclude사용시 특정필드를 toString() 결과에서 제외시킬 수 있다)
@ToString(exclude = "id")
public class User{
	private Long id;
    private String name;
    private String email;
    pribate String phoneNumber;
}

User = new User();
user.setName("John");
user.setEmail("xxx@.com");
user.setPhoneNumber("010-1234-1234");
System.out.print(user);

equals, hashcode 자동 생성

  • @EqualsAndHashCode(callsuper = true/false) : equals와 hashcode 메소드를 자동으로 생성 해준다. (callsuper 속성을 통해 equals와 hashcode 메소드 자동 생성시 부모 클래스의 필드 까지 감안할지 안 할지에 대해서 설정해준다. true시 부모 클래스의 필드 값도 동일한지 체크)
@EqualsAndHashCode(callsuper = ture)
public class User{
	private Long id;
    private String name;
    private String email;
    pribate String phoneNumber;
}

User user1 = new User();
user.setName("John");
user.setEamil("aaa@.com");
user.setPhoneNumber("010-1111-1111");

User user2 = new User();
user.setName("John");
user.setEamil("aaa@.com");
user.setPhoneNumber("010-1111-1111");

user1.equals(user2) //true

위의 모든 Lombok 사용

  • @Data : @Getter, @Setter, @RequiredArgsConstroctor, @ToString, @EqualsAndHashCode 를 모두 한번에 설정 해준다.
@Data
public class User {
	...
 }
728x90
반응형