WIL - 3주차 정리

김지현·2023년 4월 23일
0

항해99

목록 보기
12/16

2023-04-23


IoC

( Inversion of Control ) - 제어의 역전

  • 메서드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것

장점

  1. 결합도가 줄어듦
  2. 유연선이 높아짐
  3. 가독성이 높아짐
  4. 코드 중복이 줄어듦
  5. 유지 보수에 편리함

DI

( Dependency Injection ) - 의존성 주입

  • 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴
    ( IoC 프로그래밍 모델을 구현하는 방식 중 하나 )
  • 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입함

의존관계

의존 대상 B가 변하면, 그것이 A에 영향을 미칠 때 A는 B와 의존관계라고 함

■ DI 가 필요한 이유

  1. 클래스와 클래스 간의 결합이 강하면 하나의 클래스가 바뀌면 매번 생성자를 바꿔줘야 하는 등 유연성이 떨어지게 됨
  2. 객체 지향 프로그래밍을 위해선 클래스 간의 관계에 의존하면 안되고 객체들 간의 관계를 맺어야 함

주입 방법

생성자 주입

  • 생성자를 만들어 의존 관계를 주입하는 것
  • 주입받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우 사용

수정자 주입

  • @Setter 어노테이션을 사용해 의존 관계를 주입하는 것
  • 주입받는 객체가 변경될 가능성이 있는 경우 사용
  • 런타임에서 의존성을 주입함

필드 주입

  • @Autowired 어노테이션을 사용해 의존 관계를 주입하는 것
  • 런타임에서 의존성을 주입함

■ 생성자 주입 방법을 권장함

  1. NullPointerException 의 발생을 막음
    객체가 생성되는 시점에 빈을 주입함. 생성시에 의존성 없이는 생성 불가능하기 때문에 일부러 null 을 주입하지 않는 이상 발생하지 않음
  2. 불변성을 활용할 수 있음
    final 선언 가능
  3. SRP (단일 책임 원칙) 를 지킬 수 있도록 유도함

Bean

  • Spring Ioc 컨테이너가 관리하는 자바 객체

등록 방법

  1. 어노테이션 ( Annotation ) 사용
    @Component 어노테이션을 사용하거나,
    스테레오 타입인 @Controller , @Service , @Repository 등을 사용함
  2. Bean 설정 파일에 직접 등록
    @Configuration , @Bean 어노테이션 사용함
    @Configuration : 해당 파일에 빈을 등록하겠다는 선언

0개의 댓글

관련 채용 정보