
스프링 부트와 스프링의 차이점을 말하기 전, 먼저 확인해야할 개념이 있다.
📍 라이브러리(Library)란?
애플리케이션 개발에 필요한 기능인 클래스, 함수 등을 모아놓은 코드의 모음이다. 프로그래밍 세계에서 라이브러리는 도서관이라는 뜻보다는 책들의 모음이라고 생각하면 된다. 또한 라이브러리는 독립적이기에 라이브러리끼리 영향을 크게 주지 않는다.
예를 들어, 자바의 JDBC 라이브러리를 사용하여 데이터베이스와 연결할 수 있지만, 개발자가 직접 연결을 설정하고 SQL 쿼리를 작성해야 한다.
📍 프레임워크(Framework)란?
소프트웨어 개발을 수월하게 하기 위한 SW 개발 환경이다. fram(틀) + work(일하다)의 합성어로, 일하기 위한 틀을 제공하는 것이다. 즉, 개발자는 그 흐름 안에서 필요한 부분을 구현하는 방식으로 개발을 진행한다. 프레임워크가 전체 애플리케이션의 구조와 실행 흐름을 주도하는 반면 제어의 역전(Inversion of Control , 개발자는 필요한 부분에 맞춰 코드를 작성하게 된다.
대표적인 프레임 워크로 스프링 부트가 있다.
📍 스프링(Spring)과 스프링 부트(Spring Boot)의 차이
먼저 스프링과 스프링 부트의 차이점에 대해서 알아보고자 한다.
► 스프링(Spring): 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. 복잡한 기업용 애플리케이션을 더 쉽게 개발하고 관리할 수 있도록 다양한 기능을 제공하는 것이 특징이다.
그러나, 설정이 매우 복잡하다는 단점이 있다. 그래서 이를 보완하고자 스프링 부트를 출시했다.
►스프링 부트(Spring Boot): 프링 프레임워크의 복잡한 설정을 간소화하고 내장 서버를 제공하여 빠르게 애플리케이션을 구축하고 실행할 수 있게 하는 프레임워크이다.
- 웹 애플리케이션 서버(WAS)가 내장 되어있어 따로 설치하지 않아도 된다.(톰캣, 제티 등)
- XML 설정을 하지 않고 자바 코드로 모두 작성할 수 있다.
- JAR를 이용해서 자바 옵션만으로도 배포가 가능하다.
- 스프링 코어와 스프링 MVC의 모든 기능을 자동으로 로드하므로 수동으로 개발 환경을 구성할 필요가 없다.
Spring의 모든 기능은 제어의 역전(IoC)과 의존성 주입(DI)에 두고 있다.
⓵ IoC(Inversion of Control)
객체의 생성과 그 의존성의 제어를 개발자가 아닌 외부 컨테이너가 주도하도록 하여 제어의 흐름을 역전시키는 개념이다. IoC를 통해 객체의 생성을 외부에서 관리하면 코드의 결합도가 낮아지고, 더 유연한 설계가 가능해진다.
public class A {
// 클래스 A에서 new키워드로 클래스 B의 객체 생성
b = new B();
}
// 클래스 A에서 IoC 컨테이너를 통해 B 객체를 가져와 사용
public class A {
private B b;
}
이렇게 함으로써 A 클래스는 B 객체의 생성에 대한 제어를 컨테이너에 넘기게 되어 제어의 역전(IoC)이 이루어진다.
⓶ DI (Dependency Injection)
앞서 언급한 제어의 역전을 구현하기 위해 사용하는 방법이 DI이다. 직역을 하자면 의존성 주입이다.
아래 코드에서 사용하는 @Autowired라는 애너테이션은 스프링 컨테이너에 있는 빈이라는 것을 주입하는 역할을 한다. 빈은 쉽게 말해 스프링 컨테이너에서 관리하는 객체를 말한다. 또한 DI는 생성자, 세터 등을 통해 이루어진다.
public class A{
//A에서 B를 주입받음
@Autowired
B b;
}
A 클래스에서 @Autowired를 사용하면 스프링 컨테이너가 B 객체를 자동으로 생성하고 A 클래스에 주입해준다.

► IoC (제어의 역전)
"누가 객체를 만들고 관리할지"를 결정하는 방식이다. 개발자가 아닌 외부 프레임워크가 이를 관리함으로써 제어권이 역전되는 것이다.
► DI (의존성 주입)
"필요한 객체를 외부에서 넣어준다"는 방식이다. 클래스가 필요한 의존성을 외부에서 받아 사용함으로써 결합도를 낮추는 것이 목적이다.
참고문헌: 스프링 부트3 백엔드 개발자 되기:: 신선영
'CS' 카테고리의 다른 글
[Spring] 02. 스프링 빈(Bean)과 스프링 컨테이너 (0) | 2025.02.21 |
---|---|
[정보처리기사 필기] 1과목 :: 소프트웨어 설계 요약 (0) | 2025.02.20 |
[Spring] 03. AOP(관점 지향 프로그래밍)과 PSA(서비스 추상화) (0) | 2025.02.20 |
[Spring] 04. 스프링 부트 요청 - 응답 과정 ( HTTP 요청 처리 과정) (0) | 2025.02.20 |
[Spring] 05. ORM 개념 및 JPA와 하이버네이트 (0) | 2025.02.20 |