728x90
스프링 공부를 시작한지 얼마 되지 않았지만, 좋은 기회로 토이프로젝트에 서버개발자로 참여하게 되었다!
스프링부트를 완전 조금씩 찍먹해보기만 한 지금의 나는 코드를 보면서 모르는 애노테이션과 용어들이 정말 많았다. 그래서 일단은 모르는 부분들을 모두 정리하려고 한다.
이 게시물은 우선 애노테이션들을 기록하려고 한다. 순서는 다음가 같다.
- @NoArgsConstructor와 @AllArgsConstructor
- @Data
- @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에 대해 작성할 예정이다.
'토이프로젝트 > 1. Ride Together HYU - BE' 카테고리의 다른 글
[프로젝트/BE/JPA] 1. 엔티티, 레포지터리 개발하기 - JPA Query Methods (0) | 2024.04.09 |
---|---|
[프로젝트/BE/SpringBoot] 0. 시작 전 기초 정리 (2) - DTO, DAO, TDD (0) | 2024.03.29 |