Spring/코드로 배우는 스프링 웹 프로젝트
생성자를 통한 주입
하루인생
2021. 2. 22. 17:39
앞에서는setter를 통한 주입을 봤다면 이번에는 생성자를 통한 주입을 해보겠다.
스프링 4.3 이후부터는 @Autowired 없이 생성자를 통해 주입이 가능하다.
@Component
@Data
public class SampleHotel {
private Chef chef;
public SampleHotel(Chef chef) {
this.chef = chef;
}
}
@AllArgsConstructor를 사용하면 모든 인스턴스(필드)를 생성자에 주입할 수 있게해준다.
코드가 간단해졌다.
기본생성자가 필요하면 따로 생성할 필요가 있다.
@Component
@Data
@AllArgsConstructor
public class SampleHotel {
private Chef chef;
private Restaurant restaurant;
}
@RequiredArgsConstructor는 @NonNull로 설정된 인스턴스만 생성자에 주입해준다.
Restaurant는 @NonNull이 붙지 않아서 생성자에서 주입되지 않았다.
@Component
@RequiredArgsConstructor
public class SampleHotel {
@NonNull
private Chef chef;
private Restaurant restaurant;
}