소스코드에 강의 내용 주석으로 적어서 기록하기
, 키워드 위주의 정리
등)htop
을 통해 내 컴퓨터의 상태를 알 수 있었다.IoC
, 컨테이너
, DI
에 대해 훑었다.Inversion of Control
)이라고 한다.
- 정적인 클래스 의존관계
- 클래스 다이어그램으로 표현된다.
- 클래스가 사용하는
import
코드만 보고 의존관계를 쉽게 판단할 수 있다.- 정적인 의존 관계는 애플리케이션을 실행하지 않아도 분석이 가능하다.
- 실행 시점에 결정되는 동적인 객체(인스턴스) 의존관계
- 객체 다이어그램으로 표현된다.
- 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존관계이다.
- 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존 관계가 연결되는 것을 의존관계 주입(DI)이라고 한다.
- 의존관계 주입(DI)을 통해 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
AppConfig
처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것을 IoC 컨테이너
또는 DI 컨테이너
라고 한다.IoC 컨테이너
는 범용적으로 쓰인다.(ex. JUnit도 IoC 컨테이너이다.)DI 컨테이너
를 자주 사용한다고 한다.어셈블러
또는 오브젝트 컨트롤러
라고 부르기도 한다.스프링 컨테이너
와 스프링 빈
에 대해서 학습했다.@Configuration
어노테이션이 붙은 AppConfig
를 설정(구성) 정보로 사용한다.@Bean
어노테이션을 붙여 스프링 컨테이너에 등록한다.Bean 이름(key)
= Bean 객체(value)
} 로 저장이 된다.AppConfig
)를 참고하여 의존관계를 주입(DI)한다.getBean(빈 이름, 타입)
, getBean(타입)
역할과 구현의 구분 & 역할에 의존
)getBean
을 통해 조회할 일이 거의 없다.(스프링 컨테이너가 자동으로 의존관계를 주입해주는 것을 사용하기 때문)BeanFactory
: 스프링 컨테이너의 최상위 인터페이스(getBean
제공)ApplicationContext
(자주 사용) : Bean Factory
기능을 모두 상속받아 제공한다. + 부가 기능 제공BeanFactory
, ApplicationContext
모두 스프링 컨테이너라고 한다.JUnit
의 Assertions.assertThrows(예외.class, () -> 실행코드)
를 이용해보자.오늘 다음 링크의 글들을 읽고 내 프로그래밍 학습 방식을 많이 개선해야겠다는 생각을 했다.
여기 글에 나온 예시처럼 나는 오류를 그대로 긁어서 구글링하는 방법으로 학습했다.
이는 결국 근본적인 원인에 대한 궁금증, 그것에 대한 정보 습득이 없는 그야 말로 임시방편 암기였다.
다음의 문장을 새기며 오늘을 마무리한다.
프로그래밍 과정에서 발생하는 오류 메시지는 복사해서 검색을 하라고 나오는 것이 아니라 읽고 원인에 대해 생각하라고 제공되는 것