Springboot w/ JPA 1강

Joy·2022년 2월 14일
1

Springboot w/ JPA

목록 보기
1/1

스프링이란?

스프링은 프레임워크이다.

Framework = Frame(틀) + work(동작) = 틀 안에서 동작한다.

틀에 맞춰서 개발을 하면 좋은 프로그램을 만들 수 있을 거야!

스프링은 오픈소스이다.

'오픈 소스 = 소스 코드가 공개되어 있다'라는 뜻.

따라서 우리는 Spring이 어떻게 만들어졌는지 내부를 볼 수 있으며, 수정도 가능하다.

수정을 했을 경우, 기여(contribute)도 할 수 있다.

스프링은 IoC 컨테이너를 가진다.

IoC 컨테이너란?

Inversion of Controll, 직역하면 제어의 역전. 즉, 스프링에게 주도권을 빼앗겼다는 것이다.

'스프링이 주도권을 가지고 있다'라는 건

객체의 주소를 Spring이 관리한다는 뜻인데, 자세히 말하자면

이 전에는 내가 직접 new를 통해 object를 실체화 시키고

heap 메모리 공간에 띄워 객체의 주소를 관리했다면, 이제는 Spring이 관리한다는 것이다.

Spring은 우리가 클래스로 만들어 놓은 수많은 object들을(ex) 의자, 붕어빵, 사자)

전부 읽어들여서 직접 객체들을 heap 메모리 공간에 띄운다.

Spring이 직접 메모리에 띄웠기 때문에 내가 관리하는 게 아닌,

Spring이 객체의 주소를 관리하게 되는 것이다.

  • class: 설계도
  • object: 실체화 가능한 것(ex) 의자, 침대)
    Q. 가구는 object가 될 수 있을까? A. 가구는 추상적인 의미이기 때문에 될 수 없다.
  • instance: 실체화된 것(ex) 의자, 침대가 만들어지는 순간 실체화 되었기 때문에 인스턴스가 되는 것)

스프링은 DI를 지원한다.

DI는 Dependency Injection, 의존성 주입이다.

Spring은 객체를 관리할 때 스캔을 해서 heap 메모리에 딱 한 번만 띄우고 이를 싱글톤이라 한다.

우리는 그러한 객체들을 원하는 클래스의 메서드로 가져와 사용할 수 있다.

또한, 여러 다른 메서드에서 a라는 객체를 사용했다면 매번 새로운 a 객체를 사용하는 게 아닌 하나의 a 객체를 가지고 여러 메서드에서 돌려쓴다고 이해하면 된다.

예를 들어, A 메서드에서 의자 객체를 사용하고 B 메서드에서도 의자 객체를 사용한다 했을 때, 각각의 두 메서드에서 사용된 의자 객체는 같은 객체라는 뜻이다.

이렇게 heap 메모리에서 필요한 객체를 가져다가 쓰는 걸 DI라고 한다.

profile
👻

0개의 댓글