스프링 부트
- 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
- 단독으로 사용할 수 있는 스프링 애플리케이션을 쉽게 생성
- 스프링과 외부 라이브러리 자동 구성
스프링의 진짜 핵심
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
역할과 구현
- 역할은 인터페이스, 구현은 객체
- 역할과 구현을 분리하면 세상이 단순해지고, 유연해지며 변경도 편리해진다.
- 클라이언트는 대상의 역할만 알면 되고 구현 대상의 내부 구조를 몰라도 된다.
다형성의 본질
- 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.
객체지향 프로그래밍
- 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고 받고, 데이터를 처리할 수 있다.
- 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
스프링 컨테이너 == ApplicationContext
제어의 역전: 내가 아닌 프레임워크가 내 코드를 대신 호출해주는 것, 프로그램의 제어 흐름을 프레임워크가 가져간다 -> 프레임워크와 라이브러리를 구분하는 기준
의존관계 주입
정적인 클래스 의존관계와 실행시점에 결정되는 동적인 객체 의존관계가 있다
애플리케이션 실행시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라고 한다.
객체를 생성하고 관리해주면서 의존관계를 연결해주는 것을 IoC 컨테이너 또는 DI 컨테이너라고 한다.
스프링 컨테이너를 생성하고 설정 정보를 참고해서 스프링 빈도 등록하고 의존관계도 설정한다.