스프링이란 ?
스프링의 핵심 가치
객체지향 특징
객체 지향 프로그램
좋은 객체 지향 설계의 5가지 원칙 (SOLID - 로버트 마틴)
다형성의 본질
다형성 만으로는 OCP, DIP를 지킬 수 없다
스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원
DI : 의존관계, 의존성 주입
DI 컨테이너 : 자바의 객체들을 컨테이너 안에 넣고 의존관계를 서로 연결, 주입
클라이언트 코드의 변경 없이 기능 확장이 가능하다
Inversion of Control (IoC) : 제어의 역전
Depencency Injection (DI) : 의존관계 주입
IoC 컨테이너, DI 컨테이너
스프링 컨테이너
"ApplicationContext"를 스프링 컨테이너라고 한다
기존에는 개발자가 직접 객체를 생성하고 DI를 했던것을 스프링 컨테이너를 이용해 수행한다.
스프링 컨테이너는 "@Configuration"이 붙은 클래스를 설정(구성)정보로 사용한다. 여기서 "@Bean"이라 적힌 메서드를 모두 호출해 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
스프링 빈은 "@Bean"이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.
스프링 컨테이너를 통해 필요한 스프링 빈(객체)를 찾아야한다. 스프링 빈은 "applicationContext.getBean()" 메서드를 사용해 찾을 수 있다.
결론 : 스프링 컨테이너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용해야 한다