
1. IoC
2. DI
DI(Dependency Injection)란?
의존성 주입 방식
생성자 주입 (Constructor Injection)
생성자의 호출 시점에 1회 호출되는 것이 보장되므로 주입받은 객체가 변하지 않거나 반드시 객체의 주입이 필요한 경우에 사용
@Service
public class TodoService{
private final TodoRepository todoRepository;
@Autowired
public TodoService(TodoRepository todoRepository){
this.todoRepository = todoRepository
}
} // 주입 함수 명 == 메인 함수 명
@Service
@RequiredArgsConstructor
public class TodoService{
private final TodoRepository todoRepository;
} //초기화되지 않은 final 필드나, @NonNull이 붙은 필드에 대해 생성자를 생성
세터(Setter Injection) 주입
생성자 주입과는 달리 주입받는 객체가 변경될 가능성이 있을 때 사용
@Service
public class TodoService{
private TodoRepository todoRepository;
@Autowired
public void setTodoRepository(TodoRepository todoRepository) {
this.todoRepository = todoRepository;
}
} // 주입 함수 명 ≠ 메인 함수 명
필드 주입 (Field Injection)
코드가 간결해지는 대신 외부에서 접근이 불가능해 필드의 객체를 수정할 수 없어서 잘 사용하지 않음
@Service
public class TodoService{
@Autowired
private TodoRepository todorepository;
}