일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- abstract
- array
- ArrayList
- Class
- collection
- coposition api
- csr
- database
- db
- DDL
- default
- DML
- Exception
- Generic
- HashSet
- Interface
- Java
- Java 입문
- java 자료형
- java 클래스
- JavaBean
- javabeans
- JAVA의 특징
- JSESSIONID
- LinkedList
- linkedset
- list
- mariadb
- Mpa
- Mustache
- Today
- Total
GeehDev
[Spring boot] 스프링 vs 스프링 부트 본문

Spring 이란
Spring의 핵심 가치
"애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비스니스 로직 구현에만 집중할 수 있게끔 하는 것"
Spring은 Java 기반 애플리케이션 개발을 위한 프레임워크입니다.
📌 프레임워크? 라이브러리?프레임워크
란 소프트웨어 개발에 필요한 기본적인 코드와 설계 패턴을 제공하여, 개발에 필요한 기능 및 규칙 등의 뼈대를 제공하여 더 효율적이고 체계적인 개발을 도와주는 도구 입니다.라이브러리
는 개발에 필요한 특정 기능을 제공해주는 도구로 개발자의 필요에 의해 라이브러리를 호출하여 사용할 수 있습니다.
프레임워크와 라이브러리의 가장 큰 차이점은 제어권이 누구에게 있냐가 있습니다.
- 라이브러리의 경우 개발자가 직접 해당 라이브러리를 호출하여 사용하는 반면
- 스프링에서는 객체를 개발자가 직접 생성하지 않고 객체의 생명주기를 스프링 컨테이너에 위임합니다.
즉, 제어의 역전(IoC: Inversion of Control)을 통해 프레임워크가 개발자의 코드를 호출하고 객체의 생명 주기를 관리합니다.
Spring은 다음과 같은 특징을 갖습니다.
- 경량화
필요한 기능만 선택적으로 사용할 수 있슴니다.
(필요한 모듈만 선택적으로 dependency에 추가하거나 XML, Java Congit 기반으로 설정 가능) - 의존성 주입 (DI)
객체 생성을 직접하지 않고 스프링 컨테이너가 관리합니다.
이를 통해 코드 간 결합도를 낮추고 유연성과 재사용성을 높일 수 있습니다.public class MyClass { public MyClass() {} } // 기존 방식 public class MyController { private MyClass myClass = new MyClass(); } // 의존성 주입 방식 1 : 생성자를 통한 주입 @Controller public class MyController { private MyClass myClass; @Autowired public MyController(MyClass myClass) { this.myClass = myClass; } } // 의존성 주입 방식 2 : 각각 필드 선언을 통한 의존성 주입 @Controller public class MyController { @Autowired private MyClass myClass; } // 의존성 주입 방식 3 : @RequiredArgsContstructor을 통한 final 필드에 대한 자동 의존성 주입 @Controller @RequiredArgsContstructor public class MyController { private MyClass myClass; } // 의존성 주입 방식 4 : setter메서드를 이용한 방식 @Controller public class MyController { private MyClass myClass; @Autowired public setMyClass(MyClass myClass) { this.myClass = myClass; } }
- 관점 지향 프로그래밍 (AOP)
로직을 핵심기능 : 비즈니스 로직 과 부가기능 : 로깅, 보안, 트랜잭션 등 공통 기능 의 관점으로 구분하여
코드 중복을 줄이고 유지보수에 용이합니다.

- 다양한 모듈 제공
Spring MVC, Spring Data, Spring Security, Spring Batch, Spring Web 등의 다양한 기능을 모듈로 제공하고 있습니다.스프링 프레임워크의 모듈 예시 이미지
Spring Boot 란
Spring boot 공식 사이트 문구
"스프링 부트를 이용하면 단독으로 실행 가능한 사용 수준의 스프링 기반 애플리케이션을 손쉽게 만들 수 있습니다."
Spring Boot는 이러한 Spring 프레임워크를 기반으로
- 설정 간소화(Auto-Configuration)
- 내장 tomcat 제공
- 단독 실행 가능한 JAR 파일 생성
으로 기존 Spring 의 단점을 보완한 프레임워크 입니다.
Spring 과 Spring Boot의 차이점 정리
1. 설정 방식의 차이
Spring의 경우 XML 기반 설정방식으로 초기 설정이 다소 복잡할 수 있습니다.
<!-- spring-config.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Bean 설정 -->
<bean id="myService" class="com.example.MyService">
<property name="repository" ref="myRepository"/>
</bean>
<bean id="myRepository" class="com.example.MyRepository"/>
</beans>
Spring Boot의 경우 자동설정(Auto-Configuration)을 지원하여 프레임워크 자체에서 필요한 의존성을 자동으로 관리합니다.
// Spring Boot의 자동 설정
@SpringBootApplication
public class SpringBootApplication {
public static void main(Stirng[] args) {
SpringBootApplication.run(SpringBootApplication.class, args);
}
}
2. 의존성 관리
Spring에서는 개발에 필요한 각 모듈 별 의존성을 개발자가 직접 설정해야 합니다.
<!-- pom.xml -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.6</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.6</version>
</dependency>
반면, Spring Boot 에서는 spring-boot-starter
를 사용하여 의존성을 한번에 관리할 수 있습니다.
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3. 서버 의존성
Spring으로 웹 애플리케이션 개발을 하는 경우 tomcat 과 같은 외부 WAS(Web Applicaiton Server)가 필요하며, war파일로 빌드하여 배포합니다.
Spring Boot 의 웹 애플리케이션 개발을 할 때 내장 WAS를 포함합니다. 예를들어 spring-boot-starter-web
의존성 내에는 tomcat이 포함됩니다.

차이점 정리
구분 | Spring | Spring Boot |
설정방식 | XML/Java Config 파일을 통한 다소 복잡한 설정 방식 | 자동설정(Auto-Configuration) 제공 |
서버 | 외부 WAS 필요 | 내장 WAS 제공 |
실행 파일 | WAR | JAR |
장/단점 | 장점 - 다양한 애플리케이션 아키턱처 지원 - 세밀한 설정 제어로 복잡한 비즈니스 로직 구현에 용이 - 커스터 마이징이 용이하고, 대규모 앤터프라이즈 프로젝트에 적합 단점 - 초기 설정이 복잡하고 시간이 많이 소요됨 - 학습 곡선이 가파름 |
장점 - 자동설정을 통해 빠른 개발 돌입 가능 - 내장 서버와 독립 적으로 실행가능한 JAR 파일을 이용하여 쉽게 배포 가능 - 학습 곡선이 비교적 완만함 단점 - 커스터 마이징 설정이 다소 복잡함 - 기존 Spring 프로젝트 보다 유연성일 떨어짐 |
참고
스프링 부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무 - 정지우 지음
위 책을 공부하며 작성합니다.
'Study > Spring boot' 카테고리의 다른 글
[Spring boot] URL 또는 리소스 경로에 ;jsessionid 발생 시 해결방법 (3) | 2025.02.21 |
---|