@AllArgsConstructor (Lombok)모든 필드를 인자로 받는 생성자를 자동 생성
보통 DTO나 테스트용 객체 생성에 편리함
final, non-final 구분 없이 모든 필드를 포함함
@AllArgsConstructor
public class Person {
private String name;
private int age;
}
→ 생성자:
public Person(String name, int age) { ... }
@NoArgsConstructor (Lombok)기본 생성자(파라미터 없는 생성자)를 자동 생성
주로 JPA Entity 클래스에서 사용 (JPA는 프록시 생성을 위해 기본 생성자를 요구)
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
→ 생성자:
public Person() { }
@RequiredArgsConstructor (Lombok)final이 붙은 필드 또는 @NonNull이 붙은 필드만 포함한 생성자 자동 생성
의존성 주입(DI)을 위해 자주 사용됨 (Spring과 궁합이 좋음)
의존성 주입 시 생성자 주입 방식으로 사용하면 깔끔함
@RequiredArgsConstructor
public class PersonService {
private final PersonRepository personRepository;
private final String name;
private int age; // 포함되지 않음
}
→ 생성자:
public PersonService(PersonRepository personRepository, String name) { ... }
@Autowired (Spring)Spring이 의존성 주입(DI)을 해주는 어노테이션
필드 주입, 생성자 주입, 세터 주입 등에서 사용됨
@Autowired
private MyService myService;
@RequiredArgsConstructor
public class MyController {
private final MyService myService;
}
→ Spring이 생성자가 하나만 있으면 @Autowired 생략해도 알아서 주입해줌 (생성자 1개일 때는 자동 적용)
| 어노테이션 | 라이브러리 | 역할 | 특징 |
|---|---|---|---|
@AllArgsConstructor | Lombok | 모든 필드 포함 생성자 생성 | 테스트용, DTO |
@NoArgsConstructor | Lombok | 기본 생성자 생성 | JPA Entity |
@RequiredArgsConstructor | Lombok | final/@NonNull 필드만 포함 | 생성자 기반 DI |
@Autowired | Spring | 의존성 자동 주입 | 생성자/필드/세터 주입 |
@RequiredArgsConstructor
@Service
public class MyService {
private final MyRepository myRepository;
}
→ 깔끔하고, 불변 객체 유지 가능하고, 테스트하기도 좋음!
오늘 머리가 굳어 아무리 봐도 잘 이해가 안가 내일 다시 보러오겠습니다 정리 잘해주셔서 너무 감사합니다