[Spring 개념 정리] Spring의 핵심은?

kiteB·2022년 3월 8일
0

Spring 개념 정리

목록 보기
1/1

🔗 이 글은 인프런의 스프링부트 개념정리 강의의 내용을 참고하여 정리한 글입니다.

이 강의는 스프링부트의 핵심 개념을 정리할 수 있는 강의로, 오늘 공부한 내용은 Spring의 핵심이다.


[ 스프링의 핵심은? ]

지금부터 스프링의 핵심을 하나씩 자세히 알아보도록 하자!

1. 스프링은 프레임워크(Framework)이다.

  • Framework = Frame(틀) + work(동작하다) → 틀을 가지고 동작하다.
  • 프레임워크는 프로그래밍할 때 어느 정도의 구조를 제공해줌으로써,
    완성된 제품을 만들기 위해 개발자를 도와주거나 기반이 되는 역할을 한다.

📌 참고 | 프레임워크 vs 라이브러리

  • 프레임워크는 전체적인 흐름을 스스로 가지고 있으며, 개발자가 그 안에 필요한 코드를 작성한다.
  • 라이브러리는 개발자가 흐름에 대해 제어하며 필요한 상황에 가져다가 쓰는 것이다.

2. 스프링은 오픈 소스(Open Source)이다.

오픈 소스란 공개적으로 접근이 가능하기 때문에 사람들이 수정하고 공유할 수 있는 것을 말한다.

  • 오픈 소스 소프트웨어누구나 검사, 수정 및 향상할 수 있는 소스 코드가 있는 소프트웨어이다.
  • 스프링은 오픈 소스 애플리케이션 프레임워크이기 때문에 스프링의 내부를 볼 수 있으며, 내부를 뜯어 고칠 수도 있다.

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

IoC(Inversion of Control)제어의 역전이라는 뜻으로, 프로그램의 제어 흐름을 외부에서 관리하는 것을 말한다.

  • 스프링은 모든 의존성 객체를 스프링이 실행될 때 만들어주고 필요한 곳에 주입시켜줌으로써 Bean들은 싱글톤 패턴을 가지며, 제어의 흐름을 사용자가 컨트롤하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다.
  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있도록 하며, 가독성 및 코드 중복, 유지 보수를 용이하게 할 수 있게 한다.
  • 제어권이 컨테이너로 넘어옴으로써 DI(의존성 주입), AOP(관점 지향 프로그래밍) 등이 가능하게 된다.

4. 스프링은 DI를 지원한다.

DI(Dependency Injection)의존성 주입이라는 뜻으로, 객체 간의 의존성을 외부에서 주입하는 것을 말한다.

  • 첫 번째 방법은 A 객체가 B 객체와 C 객체를 new 생성자를 통해서 직접 생성하는 방법이다.
  • 두 번째 방법은 외부에서 생성된 객체를 setter()생성자를 통해서 사용하는 방법이다. 이 방법이 바로 의존성 주입의 예시이다.

✅ 의존성 주입을 사용하는 이유

의존성 주입을 사용하면,

  • 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다.
  • 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다.

📌 IoC 컨테이너, DI 컨테이너

  • AppConfig처럼 객체를 생성하고 관리하면서 의존관계를 연결해주는 것IoC 컨테이너 또는 DI 컨테이너라고 한다.
  • 의존관계 주입에 초점을 맞추어 최근에는 주로 DI 컨테이너라고 한다.
  • 어셈블러, 오브젝트 팩토리 등으로 불리기도 한다.

📌 IoC와 DI의 관계


DI는 IoC를 구현하는 방법 중 하나이다.


[ 참고자료 ]

인프런 - 스프링부트 개념 정리 강의
오픈 소스 - https://opensource.com/resources/what-open-source
IoC, DI - https://gangnam-americano.tistory.com/60
IoC, DI - https://private.tistory.com/39?category=655784

profile
🚧 https://coji.tistory.com/ 🏠

0개의 댓글