반응형

본 내용은 인프런의 김영한 님의 강의 "스프링 핵심 원리 - 기본편" 내용을 바탕으로 정리한 내용입니다.

스프링(Spring)이란?

  • 자바 기반의 오픈 소스 애플리케이션 프레임워크로 기업급 애플리케이션을 개발하기 위한 다양한 기능과 추상화 계층을 제공하여 개발자가 애플리케이션을 보다 쉽게 구축하고 관리할 수 있도록 도와준다.

1. 스프링 프레임워크(Core)

  • 스프링의 핵심 모듈로서, 제어의 역전(Inversion of Control, IoC)의존성 주입(Dependency Injection, DI)을 지원한다.
  • 개발자는 객체의 생성과 관리를 스프링 컨테이너에게 위임하여 애플리케이션의 유연성과 확장성을 높일 수 있다.
  • 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와준다.
  • 핵심기술 : 스프링 DI 컨테이너, AOP
  • 웹 기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술통합 : 캐시, 이메일 , 원격접근, 스케줄링
  • 테스트 : 스프링키반 테스트 지원
  • 언어 : 코틀린, 그루비

2. 스프링 데이터(Spring Data)

  • 데이터 액세스 계층을 개발하기 위한 모듈로, 다양한 데이터베이스와의 상호작용을 추상화하고 편리한 데이터 액세스 기능을 제공한다.
  • ORM(Object-Relational Mapping) 프레임워크인 Hibernate, JPA(Java Persistence API), MongoDB 등 다양한 데이터 소스와 통합하여 개발을 용이하게 한다.

3. 스프링 시큐리티(Spring Security)

  • 보안과 인증을 담당하는 모듈로, 웹 애플리케이션의 보안을 강화하기 위한 다양한 기능을 제공한다.
  • 스프링 시큐리티를 사용하여 사용자 인증, 권한 부여, 웹 방화벽 설정 등을 구현할 수 있다.

4. 스프링 REST Docs(Spring REST Docs)

  • 스프링 기반 RESTful API의 문서화를 지원하는 모듈로 테스트 기반으로 API의 동작과 예상되는 응답을 문서로 작성하고, 이를 템플릿화하여 API 문서를 생성한다.

5. 스프링 배치(Spring Batch)

  • 대용량 데이터 처리를 위한 모듈로, 일괄 처리(batch processing) 기능을 지원한다.

6. 스프링 클라우드(Spring Cloud)

  • 클라우드 네이티브 애플리케이션 개발을 위한 모듈로 여러 개의 마이크로서비스를 구축하고, 이를 관리하고 배포하기 위한 기능을 제공한다.

스프링 부트(Spring Boot)란?

  • 스프링 기반의 애플리케이션을 빠르고 쉽게 개발하기 위한 모듈로 자동 구성(Auto Configuration)을 통해 개발자가 설정 작업을 최소화하고, 내장형 서버를 제공하여 애플리케이션을 쉽게 실행할 수 있게 도와준다.

1. 간편한 설정

  • 스프링 부트는 스프링에서 필요한 추가적인 설정들을 기본적으로 제공해주기에 개발 비용을 줄일 수 있게 도와준다.

2. 자동 구성(Auto-configuration)

  • 스프링 부트는 자동 구성 메커니즘을 제공하여, 개발자가 수동으로 설정을 작성하지 않아도 웹 애플리케이션을 자동으로 구성하는데 클래스 경로(classpath)를 스캔하여, 사용하는 외부 라이브러리와 구성 요소에 기반하여 알맞은 설정을 자동으로 수행한다.

3. 임베디드 서버 지원

  • 스프링 부트는 웹 애플리케이션을 실행하기 위해 톰캣(Tomcat), 제티(Jetty) 와 같은 임베디드 서버를 내장하고 있다. 이를 통해 개발 및 배포가 간편해지고 별도의 서버 설치 없이도 애플리케이션을 실행할 수 있다.

4. "스타터(starter)" 종속성 제공

  • 스타터라는 개념을 도입하여 개발자들이 일반적인 작업에 필요한 종속성을 쉽게 추가할 수 있도록 지원한다.
  • 특정 기능 또는 작업에 필요한 모든 라이브러리들을 묶어놓은 패키지로, 단일 스타터 종속성을 추가함으로써 관련된 라이브러리들을 자동으로 가져올 수 있다.

5. 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공

  • 스프링 부트는 애플리케이션의 상태를 모니터링하고 관리하기 위한 다양한 기능을 제공한다.
  • 스프링 부트 액추에이터
  • 애플리케이션의 운영 환경에서 사용되는 메트릭, 헬스 체크, 로그, 스레드 덤프 등의 정보를 노출하고 관리할 수 있는 기능을 제공한다.
  • 메트릭
  • 애플리케이션의 성능, 사용량, 에러 등과 관련된 정보를 수집하고 모니터링하는 기능을 제공한다.
반응형

'Spring' 카테고리의 다른 글

[스프링] IoC와 DI  (0) 2023.07.15
[스프링] 좋은 객체 지향 프로그래밍이란?  (0) 2023.07.05
JWT 토큰이란?  (0) 2023.04.19
스프링 시큐리티(Spring Security)란?  (0) 2023.04.17
스프링부트 외장서버 구동  (0) 2022.08.08

+ Recent posts