Spring

💡Spring 이란?
- Spring 은 특정한 하나가 아니라 아래 나열된 여러가지 기술들의 모음이라고 볼 수 있다.
💡필수
- Spring Framework : Spring 의 가장 핵심

- Spring Boot : Spring Framework 를 편리하게 사용할 수 있게 해주는 프레임워크

💡선택
- Spring Data
- 데이터베이스 CRUD 를 편리하게 사용할 수 있도록 도와주는 기술
- 주로 Spring Data JPA 를 많이 사용
- Spring Session
- 세셔 기능을 편리하게 사용할 수 있도록 도와주는 기능
- ex. 세션 만료 시간 통합 관리, 세션 무효화, 사용자별 동시 로그인 제어, Spring Security 와 연동
- Spring Security
- Spring Framework 로 만든 애플리케이션을 보호하기 위한 보안 프레임워크
- 로그인, 회원관리, 권한 설정, 해킹 방지 등의 보안 기능을 개발자가 직접 만들고 관리할 필요 없음
- Spring Rest Docs
- 테스트를 통해 검증된 REST API 만 문서로 생성해주는 도구
- 코드와 문서의 불일치 방지
- Spring Batch
- 대용량 데이터를 한 번에 묶어서(batch) 처리하기 위한 배치 처리 프레임워크
- 정해진 시간, 조건에 따라 많은 데이터를 안정적으로 처리해줌
- Spring Cloud
- MSA 환경에서 필요한 공통 인프라 관리 도구
💡Spring 단어
- Spring 은 문맥에 따라 다양하게 해석될 수 있다.
- 좁게는 Spring 의 핵심 기술인 Spring DI Container 기술을 뜻한다.
- Spring Framework 자체를 의미하기도 한다.
- Spring Boot, Spring Framework 등을 모두 포함한 스프링 생태계로 사용되기도 한다.
Spring Framework
💡Spring Framework 구성
- 핵심 기술
- Spring DI 컨테이너
- AOP
- 이벤트
- 기타
- Web 기술
- Spring MVC
- Spring WebFlux
- 데이터 접근 기술
- DB 트랜잭션
- JDBC
- ORM 지원
- XML 지원
- 기술 통합
- 캐시
- 이메일
- 원격 접근
- 스케줄링
- 테스트
- Spring 기반 테스트 지원
- 언어
- Kotlin
- Groovy
Spring Boot
💡Spring Boot 란?
- Spring Boot 는 Spring Framework 를 편리하게 사용할 수 있도록 지원해주는 프레임워크이다.
- 최근에는 프로젝트에서 Spring Boot 를 기본으로 사용한다.
💡특징
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 단독으로 실행할 수 있는 Spring 애플리케이션을 쉽게 생성
- Tomcat 설치나 서버 설정 따로 필요 없음
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- ex. 웹 API 를 만들고 싶을 때,
implementation 'org.springframework.boot:spring-boot-starter-web'
을 통해서 해당 기능을 쓰려면 필요한 라이브러리들을 가져와준다.
- ex. 웹 API 를 만들고 싶을 때,
- Spring 과 3rd party (외부) 라이브러리 자동 구성
- ex. MySQL 을 사용하려고 하면,
implementation 'mysql:mysql-connector-j'
라이브러리를 추가하고,
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: 1234
yml 설정 파일을 작성하면 Spring 이 자동으로 연동해준다.
- ex. MySQL 을 사용하려고 하면,
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- implementation 'spring-boot-starter-actuator'
을 통해 운영할 때 꼭 필요한 기능들을 기본으로 제공 - ex. 서버가 살아있는지, 메모리를 얼마나 쓰는지, DB 연결 상태는 어떤지 등
- implementation 'spring-boot-starter-actuator'
- 관례에 의한 간결한 설정
- 대부분의 사람들이 이렇게 쓸 거라 가정하고 기본값을 정해줌
Spring은 왜 만들었나요?
- Spring 의 핵심 개념을 이해하면 기술을 이해하기 쉬워지기 때문에 Spring 이 만들어진 이유에 대해 알아보자
- 이 기술은 왜 만들었는지? 핵심 컨셉은 무엇인지?
💡Spring 핵심 개념
- Java 언어 기반의 프레임워크
- Java 언어의 가장 큰 특징은 객체 지향 언어
- Spring 은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- Spring 은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
💡그래서 그게 뭔데?
- Spring 이전에는 EJB 라는 기술이 있었지만, 굉장히 의존적이고 복잡하고 어려운 단점이 있었다.
- 이렇게 의존적일 경우, EJB에 종속되어 EJB 스탕이로만 개발해야하기 때문에 객체 지향이 가진 좋은 장점들을 잃게 된다.
- 이러한 단점을 극복하고 객체 지향 본래의 특성을 활용하기 위해 순수한 Java 로 돌아가기 위한 POJO 개념이 등장하기도 했다.
- 이러한 POJO 기반 개발을 실제로 가능하게 만들기 위해 Spring은 객체 생성과 의존성 관리를 컨테이너가 담당하는 IoC와 DI 개념을 도입하였다.
💡결론
- Spring 이 제대로 된 객체지향 프로그래밍을 할 수 있게 도와주는 도구라는 것
💡어렵네
- 좋은 객체 지향 프로그램이란 뭘까를 이해해야 Spring Framework 를 제대로 이해할 수 있다.
- 이것이 모든 것의 출발점 !
- Spring 의 본질을 알면 객체 지향 프로그래밍에 얼마나 최적화 되어있는지 이해할 수 있다.
출처
스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의
현재 평점 5.0점 수강생 49,133명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프
www.inflearn.com
'Java Framework > [인프런] 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
| [Spring] 객체 지향 설계와 스프링 (0) | 2026.01.27 |
|---|---|
| [Spring] 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2026.01.26 |
| [Spring] 좋은 객체 지향 프로그래밍이란? (0) | 2026.01.23 |