Spring
Java 언어 기반의 Framework. 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크로, 좋은 객체지향 애플리케이션을 개발할 수 있도록 도와준다. Java로 다양한 애플리케이션을 만들 수 있으며, JSP/MyBatis/JPA 등의 Java 기술들을 더 편하게 사용할 수 있도록 한다. → Java 기술들을 더 쉽게 사용할 수 있게 하는 오픈소스 프레임워크
- Framework(프레임워크) : 어떤 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며, 소프트웨어 개발의 뼈대 역할. 자주 쓰이는 기능을 한데 모아놓은 유틸(클래스) 모음(집합). 기반 코드(설계의 기반이 되는 부분을 기술한 확장 가능한 소스)와 라이브러리(사용자가 기반 코드를 필요한 대로 수정, 확장하는 데 필요한 것) 두 요소 통합하여 제공
특정 기술에 종속되지 않고(기술 비침투적) 객체를 관리할 수 있는 컨테이너를 제공하는 것이 기본 철학이다.
핵심 기술 | 스프링 DI 컨테이너, AOP, 이벤트, 기타 |
웹 기술 | 스프링 MVC, 스프링 WebFlux |
데이터 접근 기술 | 트랜잭션, JDBC, ORM 지원, XML 지원 |
기술 통합 | 캐시, 이메일, 원격접근, 스케줄링 |
테스트 | 스프링 기반 테스트 지원 |
언어 | 코틀린, 그루비 |
문맥에 따라 Spring이라는 단어는 다르게 사용되지만, 최근엔 스프링부트, 프레임워크를 모두 포함한 생태계를 말한다.
Spring에는 여러 요소가 존재하는데, 필수 요소인 스프링 프레임워크, 스프링 부트 외에도 여러 선택 요소가 있다.
- (필수) 스프링 프레임워크
- (필수) 스프링 부트
- (선택) 스프링 데이터 : CRUD 기술을 조금 더 편리하게 사용할 수 있도록 제공 → JPA
- (선택) 스프링 세션
- (선택) 스프링 시큐리티 : 보안 관련
- (선택) 스프링 Rest Docs : API 문서, 테스트를 엮어 문서화를 편하게 해주는 것
- (선택) 스프링 배치
- (선택) 스프링 클라우드
SpringBoot
Spring(스프링)을 편리하게 사용할 수 있도록 지원한다. 최근에는 기본으로 스프링 부트를 사용하는 추세
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 → 빌드하고 웹서버를 다시 받아서 넣고 띄우고 복잡했는데, 이제는 Spring에서 이 과정을 자동으로 다 해줘서 편리함
- Tomcat같은 웹 서버를 내장하여 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공 → 라이브러리 사용시 의존 라이브러리를 함께 가져와줌
- 스프링과 3rd parth(외부) 라이브러리 자동 구성 → 외부 라이브러리 사용시 버전 관련 고민을 없애줌 (알아서 버전을 맞춰줌)
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공 → 모니터링 관련 기능 제공
- 관례에 의한 간결한 설정 (로컬에서 공부할 때는 굳이 필요없다) → 웬만한 건 다 default 설정에 있고, 필요한 부분만 커스텀하여 사용 가능
Spring vs SpringBoot
스프링과 스프링부트는 모두 스프링 프레임워크를 기반으로 한 Java 앱 개발 프레임워크인데, 차이점이 존재한다.
Spring
스프링 프레임워크의 핵심 모듈을 모아서 만든 프레임워크. 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너를 추가하고, 필요한 빈 객체를 등록하고, 빈 객체 간의 의존성을 설정해야 한다. 또한 특정한 구성을 위해 추가적인 라이브러리와 설정이 필요하다.
SpringBoot
Spring에서 제공하는 여러 기능들을 자동으로 설정하여 개발자가 보다 쉽게 사용할 수 있도록 한다.
- 스프링 MVC, 스프링 Data JPA, 스프링 Security 등의 기능을 자동으로 설정
- 개발자가 별도로 설정 파일을 작성하지 않아도 사용할 수 있음
- Actuator(모니터링과 관리를 위한 기능) 제공 → 애플리케이션 상태 모니터링과 필요한 조치를 취할 수 있도록 함
Spring은 설정 파일을 작성해야 하는 반면, SpringBoot는 자동 설정을 제공하여 간편하게 개발할 수 있다. 또한 스프링 부트는 내장 서버를 제공하여 쉽게 웹 애플리케이션을 실행할 수 있다.
Spring은 프레임워크, SpringBoot는 스프링 프레임워크를 기반으로 한 도구
- Spring → 스프링 프레임워크를 보다 세밀하게 제어하고자 하는 경우 사용
- SpringBoot → 빠르고 간단하게 스프링 애플리케이션을 개발하고자 하는 경우 사용
'⚙ Framework > Spring-스프링' 카테고리의 다른 글
[Spring] JPA Enum Converter로 DB Entity Mapping하기 (0) | 2025.03.25 |
---|---|
[Spring] 운영 환경에서의 로그 모니터링 레벨 구분 (0) | 2025.02.07 |
[Spring] 스프링 부트(Spring Boot) 프로젝트 생성 (0) | 2024.12.01 |
[E] No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.4 was found. (0) | 2023.10.16 |
[Java] Spring이란? (2) - Spring의 주요 특징 (0) | 2023.08.03 |