■ 스프링은 프레임워크
(Framework) 이다.
■ 스프링은 오픈소스
(Open Source)이다.
- 소스코드가 공개되어 있다. 즉, 뜯어 고칠 수 있다.
⭐스프링은 IoC
(Inversion of Control, 제어의 역전) 컨테이너를 가진다.
- 주도권이 스프링에게 있다.
- 사용자가 생성한 객체를 스프링이 직접
Heap
메모리 영역에 저장하고, 관리한다.
- 생성된 객체는 딱 한번만 Heap에 저장되고, 한 객체를 공유하여 사용한다. (
싱글턴
)
⭐스프링은 DI
(Dependency Injection, 의존성 주입)를 지원한다.
- 사용자가 원하는 모든 클래스의 메서드에서 스프링이 관리하는 객체를 가져와서 사용할 수 있다.
- IoC를 통해 저장된 객체를 DI를 통하여 사용 가능
■ 스프링은 엄청나게 많은 필터(인터셉터
, Interceptor)를 가지고 있다.
- 서버로 들어온 요청을 핸들러로 도달하기 전 추가 작업을 진행할 수 있는 것 (권한 확인 등)
- 스프링자체 필터 사용, 필터를 선택하여 사용, 필터를 직접 생성하여 사용 가능
- Tomcat이 가지고 있는 필터(filter) - web.xml
- Spring 컨테이너가 가지고 있는 인터셉터(Interceptor) - AOP?