처음에 스프링부트 관련 실습을 했을 때?
비슷한 듯, 비슷하지 않은 애노테이션을 보면서 "뭘까?"라는 생각이 든 적이 있다.
그것은 바로!
- @NoArgsConstructor
- @AllArgsConstructor
- @RequiredArgsConstructor
이다.
자바 실습을 할 때는 일일이 입력해 주던 것들을 lombok의 기능을 사용함으로 인해!
노동력을 줄여주는 고마운 이 애노테이션들은, 실제 프로젝트 코드에서도 정말 많이 사용되고 있는 것 같았다.
이번 기회에 간단하게 정리하고 간다.
@NoArgrsConstructor
- Lombok에서 제공함
- 클래스에 기본 생성자를 자동으로 생성해주는 역할을 함
- 기본 생성자는 매개변수가 없는 public 생성자임
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class UserDTO {
private String name;
private int age;
}
만약 해당 애노테이션을 사용하지 않는다면, 아래와 같이 일일이 작성해야 할 것이다.
public class UserDTO {
private String name;
private int age;
// 기본 생성자
public UserDTO() {
this.name = "gildong";
this.age = "20";
}
}
@AllArgsConstructor
- Lombok에서 제공함
- 모든 필드를 매개변수로 받는 생성자를 자동으로 생성함
- 객체를 생성할 때 모든 필드를 초기화하는 생성자를 생성
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class UserDTO {
private String name;
private String age;
}
애노테이션을 사용하지 않은 경우에는 아래와 같이 작성을 해야할 것이다.
public class UserDTO {
private String name;
private int age;
public UserDTO (String name, int age) {
this.name = name;
this.age = age;
}
}
@RequiredArgsConstructor
- Lombok에서 제공
- 생성자 자동 생성 도구
- null이 아니고, final로 선언되어 있는 경우에 대한 생성자를 생성
import lombok.RequiredArgsConstructor;
@Controller
@RequiredArgsConstructor
public Class UserController {
private final UserService userService;
}
아직 프로젝트 경험은 많이 없지만, 내가 봤을 때 @RequiredArgsConstructor는 컨트롤러에서 많이 볼 수 있는 것 같다.
물론 생성자 주입이 필요한 곳이라면 많이 볼 수 있는 애노테이션이다.
그 외에 service단에서 repositry 를 생성자 주입해야 할 때도 볼 수 있는 애노테이션이다.
자주 사용하고, 자주 보게 되니 눈에도 익은 애노테이션이라고 할 수 있겠다.
300x250
'Framekwork > SPRING' 카테고리의 다른 글
[스프링부트] Querydsl 사용 테스트 01 (댓글 있는 리스트 전체 조회) (0) | 2024.03.09 |
---|---|
[스프링부트] Maven Querydsl 설정 및 의존성 추가 (java: cannot access javax.persistence.entitymanager) (0) | 2024.03.08 |
[스프링부트] 시큐리티 설정 ('authorizeHttpRequests()' is deprecated and makred for removal) (0) | 2024.03.01 |
[스프링부트] QueryDSL 정리 (0) | 2024.02.29 |
[FRAMEWORK] 스프링 시큐리티 (0) | 2024.02.29 |