스프링의 핵심

김지수·2023년 7월 4일

출처: [인프런] 스프링부트 개념정리(이론) - 강의 정리 1

스프링부트 핵심정리 1강 - 스프링의 핵심은 무엇인가요?

스프링이란?

  • 스프링은 프레임워크다.
  • 스프링은 오픈소스다.
  • 스프링은 IoC(Inversion of Control: 제어의 역전) 컨테이너를 가진다.
    • 제어의 역전: 주도권이 스프링에 있음

      ex)

      Class: 설계도
      Object: 실체화가 가능한 것
      Instance: 실체화 된 것

      가구: abstract class (추상적)
      의자: object (실체화 가능)
      침대: object (실체화 가능)
      실제로 만들어진 의자: instance
      실제로 만들어진 침대: instance

      이제 IoC란?

      public void make() {
      의자 s = new 의자();
      }
    • new생성자를 통해 object를 heap이라는 메모리 공간에 올림 = 실체화

    • s가 그 메모리 공간을 참조함(가리킴)

    • s는 make() 메서드가 실행되는 순간에만 힙 메모리에 떠 있음

      public void use() {
      의자 s = new 의자();
      }
    • 위처럼 다른 메서드 use()에서 s를 만들면?
      -> 별개의 주소 값을 가지게 됨. 즉, 이전에 만든 s를 공유하지 못함
      (넘겨 받아야 하는데 로직 짜기가 힘들다는 문제)
      -> 해결하기 위해 스프링 등장

      => 수많은 object를 스프링이 한 번에 스캔해서 읽고 객체들을 직접 heap 메모리에 띄워줌


  • 스프링은 DI(Dependency Injection: 의존성 주입)를 지원한다.
    • 이제 스프링이 객체를 스캔해서 메모리에 띄우기 때문에 new를 사용해서 직접 관리할 필요 없음
    • 내가 원하는 모든 클래스의 메서드에서 원하는 객체를 가져와서 사용할 수 있음
    • make()에서 사용하는 의자 s와 use()에서 사용하는 의자 s는 같은 의자
      -> 같은 의자를 여기저기 가져가서 사용할 수 있음 -> 싱글톤 구조
    • 즉, 객체 공유가 쉬워짐

  • 스프링은 엄청나게 많은 필터를 가지고 있다.
  • 스프링은 엄청나게 많은 어노테이션을 가지고 있다.
  • 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.
  • 스프링은 BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.
  • 스프링은 계속 발전 중이다.
profile
안녕하세요

0개의 댓글