Spring

[메타코딩] 1강. 스프링 프레임워크란?

joje* 2023. 8. 30. 00:15

- 스프링의 특징

  1. 스프링은 프레임워크이다.
  2. 스프링은 오픈소스이다.
  3. 스프링은 IOC 컨테이너를 지닌다.
  4. 스프링은 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 의자();
}

<그림1>

 

스프링은 사용자가 생성한 수 많은 object 들을 전부 스캔해 중복없이 heap 메모리에 직접 띄워주고 관리해준다.이러한 스프링의 기능을 '제어의 역전(Inversion Of Control)'이라 한다.

 

DI(Dependency Injection)란?

: IOC에 의해 heap 메모리에 올라가는 object들은 프로젝트 내에 다양한 클래스에서 공유해서 사용할 수 있다. 즉, 모든 객체들은 싱글톤 패턴으로 이용되며, 이렇게 필요한 객체들을 다양한 클래스에서 이용하는 것을 '의존성 주입(Dependency Injection)' 이라고 한다.