Spring의 정의
Spring은 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크다.
프레임워크란?
프레임워크란, 개발을 용이하게 하기 위해 만들어진 뼈대나 구조라고 볼 수 있다. 즉, 소프트웨어를 설계하고 구현하는 과정에서 재사용 가능하게끔 기본적인 뼈대나 틀을 제공하는 것이라고 이해하면 될 것 같다. 프레임워크를 사용하면 개발의 효율과 일관성을 높일 수 있다.
스프링 프레임워크에서 제공하는 IoC(제어의 역전)
제어의 역전(Inversion Of Control)이란, 어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 프로그래머가 신경써야할 것을 줄이는 전략이다.
프레임워크 자체가 실행의 흐름을 갖고 있고, 프로그래머는 프레임워크 안에 코드를 넣어서 개발을 진행한다. 일반적인 통념으로는 프로그래머가 가지고 있어야 할 제어 권한을 프레임워크에 넘겨준다는 점에서 제어의 역전이라고 부른다.
스프링 프레임워크에서 제공하는 DI(의존성 주입)
의존성 주입(Dependency Injection)이란, 객체 A가 객체 B를 사용(의존)한다고 할 때, 객체 A 내부에서 객체 B를 직접 생성하는 것이 아니라, 외부에서 객체 B를 생성하고 객체 A에 주입시키는 방식이다.
의존성 주입을 통해 클래스 간의 결합도가 낮아지고 유연성이 높아진다.
+) 모듈이란,함수나 변수 또는 클래스를 모아 놓은 파일이다.
vs. 라이브러리
라이브러리는 특정 기능을 하는 도구나 함수의 집합이다.
프레임워크와 라이브러리의 가장 큰 차이는 제어의 권한이 어디에 있느냐의 차이다. 프레임워크에는 제어의 역전(IoC)이 적용되어 제어 권한을 프레임워크가 갖지만, 반면에 라이브러리는 프로그래머가 실행 흐름에 대한 제어 흐름을 갖고 특정 기능이 필요할 때 호출되어 사용된다.
스프링 부트(Spring Boot)란?
스프링 프레임워크의 복잡한 환경설정의 많은 부분을 자동화하여, 스프링 프레임워크를 더 쉽게 사용할 수 있도록 도와주는 것이다.
스프링 부트는 빠른 시간내에 애플리케이션이 제품화될 수 있도록 하는 것을 목표로 한다. 따라서 실행 환경이나 의존성 관리 등의 인프라에 대해 신경 쓸 필요 없이 바로 코딩을 시작할 수 있다는 장점이 있다.
또한, actuator나 log4j을 통해서 애플리케이션 추적, 모니터링, 로깅 등의 유지보수를 도와주기도 한다.
참고
'Backend > 🍃Spring' 카테고리의 다른 글
[Spring] 영속성 컨텍스트 (Persistence Context) (0) | 2021.11.30 |
---|---|
[Spring] JPA N+1 문제 (0) | 2021.11.28 |
[Spring] JPA, Hibernate, Spring Data JPA 개념 (0) | 2021.11.25 |
[Spring] 스프링 빈(Spring Bean) (0) | 2021.11.23 |
[Spring] 다양한 의존성 주입 방법 (0) | 2021.11.23 |