Spring(STS)

00. Spring 에 대하여

Y25N 2023. 8. 6. 16:21
728x90

- 스프링은 자바/코틀린 기반의 웹 프레임워크이다.

Java Virtual Machine에서 작동한다. 웹 프레임 워크란 웹 서비스 개발을 위한 프레임워크를 말한다. Java - Spring, Python - Django, Node.js - Express.js / Nest.js, PHP - Laravel, Ruby - Ruby on Rails가 그 예이다. 특히 Spring, Django, Ruby on Rails의 경우 풀 스택 웹 프레임 워크로, 웹 개발에 필요한 요소를 모두 갖춘 웹 프레임워크이다. 

 

- 스프링은 오픈소스이다.

오픈소스란 어떤 소프트웨어 프로그램을 개발하는 과정에 필요한 소스코드나 설계도를 누구나 접근해서 열람할 수 있도록 공개한 것을 말한다. 보통 소스가 공개된 소프트웨어를 오픈 소스 소프트웨어라고 한다.

 

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

IoC란, Inversion of Control의 약자로 제어 반전을 의미한다. 즉, 객체의 생성, 생명주기 관리까지 모든 객체에 대한 제어권이 바뀌었다는 의미이다. 컴포넌트 의존관계 설정, 설정, 생명주기를 해결하기 위한 디자인 패턴이다. 컨테이너란 보통 객체의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하는 것이다. 스프링 프레임워크의 IoC컨테이너는 객체를 생성, 관리, 책임지고 의존성을 관리해주는 컨테이너이다. 스프링에서는 인스턴스의 생성부터 소멸까지 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다. 따라서 객체관리 주체가 프레임워크 (container)가 되기 때문에 개발자는 로직에 집중할 수 있다는 장점을 가진다.

 

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

IoC는 두가지로 분류되는데, DL(Dependency Lookup)과 DI(Dependency Injection)이다. 

DL: 저장소에 저장되어 있는 bean에 접근하기 위해 컨테이너가 제공하는 api를 이용해 bean을 lookup

DI: 각 클래스간 의존관계를 BEAN DEFINITION 정보를 바탕으로 컨테이너가 자동 연결 (수정자 주입, 생성자 주입, 필드 주입)

 

여기서 DL을 사용하게 될 경우 컨테이너 종속이 증가하기 때문에 주로 DI를 사용한다.