- 스프링의 특징
- 스프링은 프레임워크이다.
- 스프링은 오픈소스이다.
- 스프링은 IOC 컨테이너를 지닌다.
- 스프링은 DI를 지원한다.
FrameWork란?
: Frame(틀, 정해진 규약) + Work(일,작업)
: 정해진 틀 안에서 개발을 진행하도록 만들어주는 구조화된 틀
IOC(Inversion Of Control)란?
: class(설계도), object(실체화가 가능한 것), instance(실체화가 된 것)
ex> 가구는 추상적인 의미이므로, object가 될 수 없다.
의자나 침대는 추상적인 의미가 아니므로, object 이다.
의자나 침대가 실생활에 만들어져 이용되는 경우를 instance 라고 한다.
: 아래와 같이 의자 object를 생성하고 있다고 생각해보자. object가 생성되는 순간 힙 메모리에 올라가고 의자 object에 대한 주소는 reference 변수 s가 되며, 이 주소값은 메서드 내부에서 관리되게 된다.
의자 s = new 의자();
: 즉, 아래와 같이 각기 다른 2개의 메소드에서 각각 object를 instance화 하여 생성한 경우, heap 메모리에는 의자 object가 <그림1>과 같이 각기 다르게 올라가고, 이에 대한 주소값은 각각의 메서드가 관리하여 추후 object에 대한 공유가 어려워진다.
public void make(){
의자 s = new 의자();
}
public void use(){
의자 s = new 의자();
}
: 스프링은 사용자가 생성한 수 많은 object 들을 전부 스캔해 중복없이 heap 메모리에 직접 띄워주고 관리해준다.이러한 스프링의 기능을 '제어의 역전(Inversion Of Control)'이라 한다.
DI(Dependency Injection)란?
: IOC에 의해 heap 메모리에 올라가는 object들은 프로젝트 내에 다양한 클래스에서 공유해서 사용할 수 있다. 즉, 모든 객체들은 싱글톤 패턴으로 이용되며, 이렇게 필요한 객체들을 다양한 클래스에서 이용하는 것을 '의존성 주입(Dependency Injection)' 이라고 한다.
'Spring' 카테고리의 다른 글
[메타코딩] 4강. JPA(Java Persistence API)란? (0) | 2023.09.10 |
---|---|
[메타코딩] 3강. 스프링 프레임워크란? (0) | 2023.09.10 |
[메타코딩] 2강. 스프링 프레임워크란? (0) | 2023.08.31 |
[스프링]AOP (0) | 2022.10.10 |
[개발환경] SpringBoot 프로젝트 만들기 - Spring Initializr (0) | 2022.09.07 |