SpringBoot/기본 원리

[Spring Boot 기본 원리] 스프링이란?

송승현(SSH) 2022. 8. 3. 00:12

1. 스프링이란?

  • JAVA의 엔터프라이즈 개발을 편리하게 해주는 오픈소스 애플리케이션 프레임워크
  • 핵심 기술
    • 스프링 DI 컨테이너, AOP, 이벤트, 기타
    • 웹 기술 : 스프링 MVC, 스프링 WebFlux ...
    • 데이터 접근 기술 : 트랜잭션, JDBC, ORM, XML...
    • 기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링
    • 테스트 : 스프링 기반 테스트 지원 ( jUnit 등 자바 테스트도 지원)
    • 언어 : 자바, 코틀린, 그루비 ...



2. 스프링의 생태계

  • Spring Boot
    • 스프링을 편리하게 사용할 수 있도록 지원해주는 것
    • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
    • Tomcat 같은 웹 서버를 내장하여 별도의 웹 서버를 설치하지 않아도 된다는 장점이 존재
    • 손쉬운 빌드 구성을 위한 starter 종속성 제공 (ex : JPA starter...)
    • 스프링과 3rd parth(외부) 라이브러리 자동 구성(라이브러리 버전을 자동으로 맞춰줌)
    • 메트릭 상태 확인, 외부 구성 같은 프로덕션 준비기능 제공)
    • 스프링 부트는 스프링의 여러 기술을 편리하게 사용하도록 도와주는 것!!  스프링과 스프링부트가 독립적인 것이 아니다!!!
  • 스프링 데이터
    • CRUD를 편리하게 도와주는 기술 
  • 스프링 세션
    • 세션 기능을 편리하게 도와주는 기술
  • 스프링 시큐리티
    • 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 기술, 주로 서블릿 필터와 이들로 구성된 필터체인으로 위임모델을 사용, 보안 로직을 제공하기 때문에 따로 작성할 필요가 없어짐!!
  • 스프링 배치
    • 로깅/추적, 트랜잭션 관리, 작업 처리 통계 등 대용량 레코드 처리에 필수적인 기능을 제공하는 기술
  • 스프링 클라우드
    • 스프링 부트 기반으로 MicroService의 개발, 빌드, 배포 등에 필요한 아키텍처를 쉽게 구성할 수 있도록 하는 기술
  • 이외에도 스프링의 기술은 무궁무진하다. Document를 보면 더욱 자세히 알 수 있다.
    https://spring.io/projects
 

Spring | Projects

Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.

spring.io




3. 스프링의 핵심

  • 스프링은 기본적으로 자바 기반의 프레임워크이다.
  • 자바 언어의 가장 큰 특징을 고르라고 한다면 객체 지향 언어라는 특징이다.
  • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다!!
  • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임 워크라는 것이다.



4. 스프링과 객체 지향

  • 스프링은 DI와 DI 컨테이너라는 기술로 다형성과 OCP, DIP를 가능하게 지원한다.
  • OCP, DIP에 대한 내용은 다음 포스팅을 참고하면 많은 도움이 됩니다.
    https://sorryday.tistory.com/18
 

SOLID - 좋은 객체 지향의 설계의 5가지 원칙

# SOLID 원칙이란? - 로버트 C.마틴 (Robert C.Martin)이 정리한 원칙으로 소프트웨어 작업에서 프로그래머가 소스 코드를 읽기 쉽고 확장하기 쉽게 될 때까지 소스 코드를 리팩토링하여 정리하기 위한

sorryday.tistory.com

  • DI (DependencyInjection)
    • 의존관계 의존성 주입
  • DI 컨테이너
    • 자바 객체들을 컨테이너에 넣어 놓고 의존관계 주입 및 설정
  • 이를 활용하여 클라이언트 코드를 변경 없이 기능을 확장할 수 있다.

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
본 포스팅은 인프런의 '스프링 핵심 원리 - 기본편 : 김영한 강사님'의 강의와 자료를 참고하였습니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------