성장일기

내가 보려고 정리하는 공부기록

토이프로젝트/1. Ride Together HYU - BE

[프로젝트/BE/SpringBoot] 0. 시작 전 기초 정리 (1) - @NoArgsContructor, @Data, @Builder

와나나나 2024. 3. 28. 19:01
728x90

스프링 공부를 시작한지 얼마 되지 않았지만, 좋은 기회로 토이프로젝트에 서버개발자로 참여하게 되었다!

스프링부트를 완전 조금씩 찍먹해보기만 한 지금의 나는 코드를 보면서 모르는 애노테이션과 용어들이 정말 많았다. 그래서 일단은 모르는 부분들을 모두 정리하려고 한다.

 

이 게시물은 우선 애노테이션들을 기록하려고 한다. 순서는 다음가 같다.

 

  1. @NoArgsConstructor와 @AllArgsConstructor
  2. @Data
  3. @Builder

1. @NoArgsConstructor, @AllArgsConstructor

  • @NoArgsConstructor : 파라미터가 없는 기본 생성자를 생성함
  • @AllArgsConstructor : 모든 필드값을 파라미터로 받는 생성자를 생성함 
  • @RequiredArgsConstructor : final이나 @NonNull 인 필드에 대한 생성자를 생성함
@NoArgsConstructor
@AllArgsConstructor
public class Member {
    	
    private String name;
    private int age;
    private String address;
    
}

 

위와 같이 클래스를 만들었을 때 아래와 같이 객체를 생성한다.

Member member1 = new Member(); // @NoArgsConstructor
Member member2 = new Member("kim", 20, "Seoul"); // @AllArgsConstructor

 


2. @Data

@Data 는 @Getter / @Setter, @EqualsAndHashConde, @RequiredArgsConstructor, @ToString 를 합쳐놓은 애노테이션이다. 이 애노테이션만 써두면 생성자, getter setter가 해결되므로 간편하지만, callSuper, includeFieldName, exclude와 같은 파라미터와 같이 사용될 수 없기 때문에 이같은 파라미터를 사용해야 한다면 개별 애노테이션을 명시하면 된다.

 

추가로, @EqualsAndHashConde 는 equals(), hashCode() 메소드를 생성해준다.

 


3. @Builder

생성자를 이용해 객체를 생성할 떄에는 다음과 같은 단점이 존재한다.

  • 파라미터가 많아지면 가독성이 떨어진다
  • 값을 넣는 순서가 영향을 미친다.

이를 해결할 수 있는 방안이 builder이다.

builder() 로 시작하여 값을 넣고 build()를 이용해 객체를 생성해주면 된다.

 

@Builder
public class Member {

	private String name;
    private int age;
    private String addr;
    
}

 

객체에 @Builder를 단 후 객체를 생성할 떈 아래와 같이 하면 된다.

 

Member member = Member.builder()
						.name("kang")
                        .age{20}
                        .addr("Seoul")
                        .build();

 

 


다음 게시글에서는 DTO와 DAO에 대해 작성할 예정이다.