스프링의 핵심은 무엇인가?

스프링이란?

  • 스프링은 프레임워크이다.
    • frame(틀) + work(동작하다) : 틀 안에서 동작한다.
    • framework가 나온 이유는 신입 개발자가 마음대로 만들어서 생긴 문제를 해결하기 위해 등장하였고, 틀을 제공해줘서 틀 안에서 만들 수 있게 해줍니다. 그래서 좀 더 좋은 프로그램을 작성할 수 있도록 도와줍니다.
  • 스프링은 오픈소스이다.
    • 오픈소스(opensource)
    • 소스 코드가 공개되어있습니다.
    • 스프링 내부 소스코드를 보고 뜯어고칠 수 있습니다.
      • 스프링을 사용하면서 불편한 점을 발견하게 되면 기여(contribute)할 수 있습니다.
  • 스프링은 IoC 컨테이너를 가진다.
    • IoC(Inversion of Control) : 제어의 역전
      • 주도권을 스프링에게 뺏기는 것
    • 객체(object)를 new를 통해 생성하면 heap 메모리에 올라갑니다.
      • 사용자가 직접 객체를 관리했었습니다. 하지만 스프링이 관리하게 됩니다.
    • 레퍼런스 주소는 각각의 메서드가 관리합니다.
public void make() {
  의자 s = new 의자();
}

public void use() {
  의자 s = new 의자();
}
  • 스프링이 객체를 스캔해서(읽어서) heap 메모리에 올려줍니다. 이제 메모리에 올라가 있는 객체는 스프링이 관리합니다.
  • 스프링을 통해 객체가 heap 메모리에 한번만 뜨고 그 자료를 모두 공유해서 사용할 수 있게 됩니다. -> 싱글톤
  • 스프링은 DI를 지원한다.
    • DI(Dependency Injection)
    • heap 메모리에 있는 객체들을 모든 클래스로 가져와서 사용할 수 있게합니다.

스프링의 IoC와 DI를 하면 프로그래밍을 편하게 짤 수 있습니다.

Reference

인프런 - 스프링부트 개념정리(이론)